根据熊猫中另一列的值添加列的值

时间:2019-01-23 06:20:02

标签: python pandas

我有一个包含两列a和b的数据框,我想要输出数据框中的一列c,其值是b列中的值之和,与a列中的1对应,并将该总和存储在下面的一个索引中c列

这是我拥有的输入数据:

    a    b
0   0  0.1
1   0  0.4
2   0  0.2
3   1  0.4
4   1  0.8
5   0  0.1
6   0  1.3
7   1  2.4
8   1  1.2
9   1  1.7
10  1  0.9
11  0  3.2

并且我希望输出是这样的:

    a    b    c
0   0  0.1  0.0
1   0  0.4  0.0
2   0  0.2  0.0
3   1  0.4  0.0
4   1  0.8  0.0
5   0  0.1  1.2
6   0  1.3  0.0
7   1  2.4  0.0
8   1  1.2  0.0
9   1  1.7  0.0
10  1  0.9  0.0
11  0  3.2  6.2

这是我的第一个问题,对不起,如果我的问题还不够美观,我们将不胜感激,谢谢

1 个答案:

答案 0 :(得分:2)

使用:

#compare by 1 with equal
m1 = df['a'].eq(1) 
#create unique groups 
s = df['a'].ne(df['a'].shift()).cumsum()
#get sums with transform for new column filled aggregate values, shift one value
df['c'] = df['b'].groupby(s).transform('sum').shift().fillna(0)
#set 0 to all values with not first 0 groups
df.loc[m1 | s.duplicated(), 'c'] = 0
print (df)
    a    b    c
0   0  0.1  0.0
1   0  0.4  0.0
2   0  0.2  0.0
3   1  0.4  0.0
4   1  0.8  0.0
5   0  0.1  1.2
6   0  1.3  0.0
7   1  2.4  0.0
8   1  1.2  0.0
9   1  1.7  0.0
10  1  0.9  0.0
11  0  3.2  6.2