我希望根据多行中的其他列值在python dataframe中创建一个新列。例如,我的python dataframe df:
A | B
------------
10 | 1
20 | 1
30 | 1
10 | 1
10 | 2
15 | 3
10 | 3我想要创建变量C,它基于变量A的值,条件来自多行中的变量B。当i行中变量B的值,i+1,.,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我不知道实现这一目标的最佳方法。有人能帮忙吗?
提前感谢
发布于 2019-04-30 07:12:06
重新创建数据:
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然后我将使用应用程序对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发布于 2019-04-30 06:50:38
您必须使用groupby()方法对B上的行和A上的sum()进行分组。
df['C'] = df.groupby('B')['A'].transform(sum)https://stackoverflow.com/questions/55915230
复制相似问题