用熊猫中向量列的总和创建新列

时间:2019-03-06 00:52:11

标签: python pandas

我有一个看起来像这样的数据框:

df = pd.DataFrame({'A':[[1,2,3],[4,5,6,7],[8,9]]})

所有条目都是整数。

我想创建一个新列'B',其内容为[5,22,17]

我可以循环执行此操作,但是有单行解决方案吗?谢谢!

2 个答案:

答案 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)