我在数据框中有以下一列:
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)
,它给出了相同的错误。
答案 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
希望,这可以解决您的问题。