python-3.x - 循环以基于 Python Dataframe 中的其他列值创建新列
问题描述
我想根据多行中的其他列值在 python 数据框中创建一个新列。例如,我的 python 数据框 df:
A | B
------------
10 | 1
20 | 1
30 | 1
10 | 1
10 | 2
15 | 3
10 | 3
我想创建基于变量 A 的值的变量 C,其条件来自多行变量 B。当第 i,i+1,... 行中变量 B 的值时,C 的值是这些行中变量 A 的总和。在这种情况下,我的输出数据框将是:
A | B | C
--------------------
10 | 1 | 70
20 | 1 | 70
30 | 1 | 70
10 | 1 | 70
10 | 2 | 10
15 | 3 | 25
10 | 3 | 25
我不知道实现这一目标的最佳方法。任何人都可以帮忙吗?
提前致谢
解决方案
重新创建数据:
import pandas as pd
A = [10,20,30,10,10,15,10]
B = [1,1,1,1,2,3,3]
df = pd.DataFrame({'A':A, 'B':B})
df
A B
0 10 1
1 20 1
2 30 1
3 10 1
4 10 2
5 15 3
6 10 3
然后我将从 df 创建一个查找系列:
lookup = df.groupby('B')['A'].sum()
lookup
A
B
1 70
2 10
3 25
然后我将使用 apply 在 df 上使用该查找
df.loc[:,'C'] = df.apply(lambda row: lookup[lookup.index == row['B']].values[0], axis=1)
df
A B C
0 10 1 70
1 20 1 70
2 30 1 70
3 10 1 70
4 10 2 10
5 15 3 25
6 10 3 25
推荐阅读
- python - 使用嵌套列表理解提高执行速度
- html - 是否可以只将 Gatsby.js 的某些部分添加到现有的 HTML 文件中?
- python - 如何从 Pytorch 张量中去掉每一列都用零填充?
- c++ - 我应该如何释放不使用“new”关键字创建的对象的内存?
- debugging - 在例程中间调用地址
- metal - 如何使用 Metal 在渲染图像上绘制形状而不重绘整个纹理?
- r - 如何为堆积条形图中的两列着色
- android - 无法从 Firebase 检索数据
- android - 为什么微调器项目样式有效,但微调器下拉项目样式失败?
- javascript - Edge 中的 OIDC 客户端问题