Python 如何在DataFrame中仅操作属于对象列表的特定元素
我有一个pandas数据框,其中有几列包含对象列表,如下所示:Python 如何在DataFrame中仅操作属于对象列表的特定元素,python,pandas,Python,Pandas,我有一个pandas数据框,其中有几列包含对象列表,如下所示: Index A B C 0 [1,2,3,] [4,5,6,...20] [1,2,3,...,64] 1 [1,2,3,] [4,5,6,...20] [1,2,3,...,64] .. .. n [1,2,3,] [4,5,6,...20] [1,2,3,...,64] 当然
Index A B C
0 [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
1 [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
..
..
n [1,2,3,] [4,5,6,...20] [1,2,3,...,64]
当然,数字仅供参考。我想总结一下,让我们对第一个说“10”
32列“C”的值。我试着用几种方法将apply function用于lambda,但都没有成功。你能帮我吗?
提前谢谢 不清楚您是否想要:
- 将10添加到C列前32行列表中的所有元素中李>
- 在C列所有列表的前32个元素中添加10
apply
实现,lambda返回一个列表
前者:
df.loc[0:32, 'C'] = df.loc[0:32, 'C'].apply(lambda lst: [x+10 for x in lst])
后者:
df.C = df.C.apply(lambda lst: [x+10 if i < 32 else x for i, x in enumerate(lst)])
df.C=df.C.apply(lambda lst:[x+10,如果i<32,则为x,枚举(lst)中为x)])
谢谢你,伙计!你跑得真快!对不起,误会了,你是对的。实际上,对于所有行,我想在C列的前32个元素中添加10。所以我认为正确的方法是第二种!没什么大不了的,你用一个的价格得到了两个答案;-)