Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在DataFrame中仅操作属于对象列表的特定元素_Python_Pandas - Fatal编程技术网

Python 如何在DataFrame中仅操作属于对象列表的特定元素

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] 当然

我有一个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]
当然,数字仅供参考。我想总结一下,让我们对第一个说“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。所以我认为正确的方法是第二种!没什么大不了的,你用一个的价格得到了两个答案;-)