首页 > 解决方案 > Python Pandas - 如何对出现在列中的数组元素求和

问题描述

我有以下数据框:

import pandas as pd
df1 = pd.DataFrame([(1, 2, [1, 2, 3, 4]),  \
                    (1, 2, [5, 6, 7, 8])], \
                    columns = ['a', 'b', 'c'])

我想对列“c”的数组元素求和,以便它们在每一行中的总和将出现在新列“d”中。但df1['d'] = df1['c'].sum产生以下结果:

   a  b             c                                                  d
0  1  2  [1, 2, 3, 4]  <bound method Series.sum of 0    [1, 2, 3, 4]\...
1  1  2  [5, 6, 7, 8]  <bound method Series.sum of 0    [1, 2, 3, 4]\...

代替:

     a  b              c    d
  0  1  2   [1, 2, 3, 4]    10
  1  1  2   [5, 6, 7, 8]    26

我究竟做错了什么?

标签: pythonpandas

解决方案


sum是一个函数,所以你需要括号(尽管无论如何方法都不正确,因为你必须apply在这里有问题的函数)。作为一个pd.Series map就足够了:

df1['d'] = df1.c.map(sum)

print(df1)

   a  b             c   d
0  1  2  [1, 2, 3, 4]  10
1  1  2  [5, 6, 7, 8]  26

推荐阅读