首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在新版本的熊猫中附加在细胞中

在新版本的熊猫中附加在细胞中
EN

Stack Overflow用户
提问于 2020-08-27 09:36:56
回答 2查看 39关注 0票数 1

此代码在pandas版本0.23.4中工作,但在0.25.1及更高版本中抛出一个错误。

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

df = pd.DataFrame({'a':[1,2,3], 'b': [[0,1], [5], [10]]})
df

    a   b
0   1   [0, 1]
1   2   [5]
2   3   [10]

# both lines below throw an error in newer versions
df['b'] += [42]
df.loc[df['a']==3, 'b'] += [73]
df

# desired output that works in 0.23.4
    a   b
0   1   [0, 1, 42]
1   2   [5, 42]
2   3   [10, 42, 73]

在以后的版本中,附加在细胞中的列表是如何工作的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 09:58:27

试一试

代码语言:javascript
运行
复制
df['b'].apply(lambda x: x.append(42))
df.loc[df['a']==3, 'b'].apply(lambda x: x.append(73))

(在熊猫版本1.0.5上测试)

票数 2
EN

Stack Overflow用户

发布于 2020-08-27 09:58:26

以下是两种方法:

方法1

代码语言:javascript
运行
复制
df['b'] = pd.concat([df['b'], pd.Series(42)], axis=1)['b']
df.loc[df['a']==3, 'b'] = df.loc[df['a']==3, 'b'].to_numpy().tolist()[0] + [73]

方法2

代码语言:javascript
运行
复制
from itertools import zip_longest

ls = list(zip_longest(df['b'], [42]))

df['b'] = [x[0] for x in ls]

print(df)

   a           b
0  1  [0, 1, 42]
1  2     [5, 42]
2  3    [10, 42]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63613194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档