我正在尝试这样的方法:List append in pandas cell
但问题是这个帖子太旧了,所有的东西都过时了,不应该再用了。
d = {'col1': ['TEST', 'TEST'], 'col2': [[1, 2], [1, 2]], 'col3': [35, 89]}
df = pd.DataFrame(data=d)
| 列1|第2列|第3列|
| - -|- -|- -|
| 测试|[一、二、三]|三十五|
| 测试|[一、二、三]|八十九|
我的Dataframe看起来像这样,其中col 2是我感兴趣的一个。我需要为DataFrame中的每一行向col 2中的列表添加[0,0]。我的真实的DataFrame是动态形状的,所以我不能只设置每个单元格。
最终结果应如下所示:
| 列1|第2列|第3列|
| - -|- -|- -|
| 测试|[1、2、3、0、0]|三十五|
| 测试|[1、2、3、0、0]|八十九|
我用df.apply
和df.assign
做了一些尝试,但似乎无法让它工作。我尝试了:
df['col2'] += [0, 0]
df = df.col2.apply(lambda x: x.append([0,0]))
Which returns a Series that looks nothing like i need it
df = df.assign(new_column = lambda x: x + list([0, 0))
3条答案
按热度按时间daupos2t1#
不确定这是不是最好的方式去,但,选项2工程与一点修改
首先,如果要将可迭代对象的所有成员添加到列表中,请使用
.extend
而不是.append
。这是行不通的,因为该方法在原地工作,并且不返回任何内容,因此“col2”值将变为None
,因此请改用列表求和。最后,要将修改后的列分配给原始DataFrame,而不是覆盖它(这是Series返回的原因)hfyxw5xn2#
一个想法是使用列表理解:
ibps3vxo3#
你试过下面的代码吗?
此致,Stan