我有一个看起来像这样的数据框:
df = pd.DataFrame({'A':[[1,2,3],[4,5,6,7],[8,9]]})
所有条目都是整数。
我想创建一个新列'B',其内容为[5,22,17]
。
我可以循环执行此操作,但是有单行解决方案吗?谢谢!
答案 0 :(得分:1)
要从DataFrame中提取行,并将每一行作为内置的python列表求和:
res = [sum(x[0]) for x in df.values.tolist()]
res
[6, 22, 17]
要将行总和分配到新列中:
df['B'] = [sum(x[0]) for x in df.values.tolist()]
df
A B
0 [1, 2, 3] 6
1 [4, 5, 6, 7] 22
2 [8, 9] 17
正如@roganjosh所评论的那样,请尝试避免将内置的python对象(例如列表)存储在pandas DataFrames中。
答案 1 :(得分:0)
检查并重新构建列表列,然后执行sum
pd.DataFrame(df.A.tolist()).sum(1)
0 6.0
1 22.0
2 17.0
dtype: float64
df['New']=pd.DataFrame(df.A.tolist()).sum(1)