python - 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
我究竟做错了什么?
解决方案
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
推荐阅读
- android - 带有背景的android中的自定义进度条
- android - 如何在android的房间db中获取映射到pojo的列信息
- java - 与 Windows 相比,Linux 中的 Java Swing GUI 内存使用率更高
- powershell - 循环哈希表 - ping IP 地址设置持续时间
- prolog - 将谓词演算语句翻译成 Prolog
- python - Python中的字符串迭代
- php - 用ajax写一个php页面
- google-cloud-run - 某些域的基本域映射损坏
- javascript - 为什么我的 Giphy API 的 POST 请求返回状态 400?
- php - 如何在 php 中知道 sql 获取的行何时共享相同的 ID 以及何时开始一组新的 ID