首页 > 解决方案 > 如何仅操作属于 Pandas DataFrame 中对象列表的某些元素

问题描述

我有一个 pandas DataFrame,其中几列包含对象列表,如下所示:

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]

当然数字仅供参考。我想总结一下,假设“C”列的前 32 个值是“10”。我尝试以多种方式将应用函数与 lambda 一起使用,但均未成功。你可以帮帮我吗?提前致谢!

标签: pythonpandas

解决方案


目前尚不清楚您是否要:

  • 将 C 列前 32 行中列表内的所有元素加 10;
  • 将 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)])

推荐阅读