熊猫df中的值总和

时间:2019-04-16 00:08:33

标签: python pandas sum

我确定它可能在SO中的某个地方,但是我似乎找不到它。我正在尝试从sum listspandas中表达的df值。例子

我可以使用array中的以下代码来实现此目的:

array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

array = [sum(a) for a in zip(*array)]

但是当值包含在df中时,我将无法正常工作。这是我的尝试:

d = ({
    'Val' : [[1,2,3],[4,5,6],[7,8,9]],   
     })

df = pd.DataFrame(data = d)

df = [sum(a) for a in zip(df['Val'])]

print(df)

df = [sum(a) for a in zip(df['Val'])]

TypeError: unsupported operand type(s) for +: 'int' and 'list'

3 个答案:

答案 0 :(得分:1)

您缺少的是将其发送到列表对象中的列表中,请执行以下操作:

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

df = [sum(a) for a in df['Val'].tolist()]

用数据框进行列表理解真的很慢。

答案 1 :(得分:1)

您缺少要打开包装的*星号运算符:

df = [sum(a) for a in zip(*df['Val'])]

print(df)
[12, 15, 18]

现在它传递了列表,这就是为什么出现此错误的原因:

for a in zip(df['Val']):
    print(a)

print('\n')

for a in zip(*df['Val']):  # <--- notice the *
    print(a)

# Output

([1, 2, 3],)
([4, 5, 6],)
([7, 8, 9],)


(1, 4, 7)
(2, 5, 8)
(3, 6, 9)

答案 2 :(得分:1)

首先转换为np.array

df.Val = df.Val.apply(lambda x: np.array(x))

然后您可以使用.sum

df.Val.sum()

array([12, 15, 18])