pandas - 如何对每个单元格包含列表的 pandas df 行求和?
问题描述
我试图将我的df的行总结如下,假设我有下面的df(一行中的每个单元格都包含一个相同大小的向量/列表!)在真正的问题中,我有大量的列并且它可以变化。但我确实有一个包含这些列名称的列表。
df = pd.DataFrame([
[[1,2,3],[1,2,3],[1,2,3]],
[[1,1,1],[1,1,1],[1,1,1]],
[[2,2,2],[2,2,2],[2,2,2]]
], columns=['a','b','c'])
我正在尝试创建一个新列,它将包含每一行中所有向量的总和——就像 np.array 一样!结果得到以下向量:
[3,6,9]
[3,3,3]
[6,6,6]
不像.sum (axis=1) 那样..
[1,2,3,1,2,3,1,2,3]
[1,1,1,1,1,1,1,1,1]
[2,2,2,2,2,2,2,2,2]
谁能想到一个主意,在此先感谢:)
解决方案
如果相同长度的列表创建 numpy 数组并求和以提高性能:
df['Sum'] = np.array(df.to_numpy().tolist()).sum(axis=1).tolist()
print (df)
a b c Sum
0 [1, 2, 3] [1, 2, 3] [1, 2, 3] [3, 6, 9]
1 [1, 1, 1] [1, 1, 1] [1, 1, 1] [3, 3, 3]
2 [2, 2, 2] [2, 2, 2] [2, 2, 2] [6, 6, 6]
推荐阅读
- swift - 无法将一种视图出列:UICollectionElementKindCell 与 Deferent ViewController 上的标识符
- bash - 为 ElasticSearch 生成大的随机 JSON 数据集
- delphi - 如何突出显示特定的弹出菜单项?
- javascript - HTML - 如何刷新 iframe?
- javascript - javascript 将十六进制字符串格式化为 0x00 然后推送到 Uint8Array
- python - 如何在 Jinja 中格式化十进制千位分隔符
- model-view-controller - 在 MVC 应用程序中找不到与请求 URI 匹配的 HTTP 资源
- python - 带列表的 Python 函数
- python - 传递给 sklearn.model_selection.cross_validate 时,从 DataFrame 中选择的特征具有不同的长度?
- c++ - 有没有办法避免错误 C2039: "value": Is not a member of "boost::proto"?