访问Pandas DataFrame元素内的列表并对该列表求和

时间:2019-06-25 11:43:31

标签: python pandas

我在数据框中有以下一列:

columnA
[1.,2.3,3.]
[2]
[3,4.]

与本论坛的其他帖子类似,我想在数据框中总结这种类型的列表,因此在这种情况下,我想对列表进行汇总,以使我拥有新的列:

columnA
6.3
2
7

我尝试过: df['columnA'] = df5['columnA'].apply(lambda x: x.sum())出现错误:AttributeError: 'list' object has no attribute 'sum'

然后我尝试了df['columnA'] = (df['columnA'].values.tolist()).sum(1),它给出了相同的错误。

3 个答案:

答案 0 :(得分:2)

看起来您的列中也有浮点数。使用isinstance检查对象是否可迭代,然后使用sum

例如:

df = pd.DataFrame({'columnA':[[1.,2.3,3.], [2], [3,4.], 10.9]})
df["columnA"] = df["columnA"].apply(lambda x: sum(x) if isinstance(x, (list, tuple)) else x)
print(df)

输出:

   columnA
0      6.3
1      2.0
2      7.0
3     10.9

答案 1 :(得分:1)

怎么样:

>>> df.applymap(lambda x: sum(x) if isinstance(x, list) else x)
   columnA
0      6.3
1      2.0
2      7.0
3     10.9
>>>  

答案 2 :(得分:0)

请尝试此操作

import pandas as pd

data = pd.DataFrame([[[2.3,2.0,1.2]],[[1.9,1]],[[4.2,0.2,6.8,9.4]]],columns=['ColA'])
data['TotalColA'] = data['ColA'].apply(lambda x: sum(x))
print(data)

输出:

                   ColA  TotalColA
0       [2.3, 2.0, 1.2]        5.5
1              [1.9, 1]        2.9
2  [4.2, 0.2, 6.8, 9.4]       20.6

希望,这可以解决您的问题。