两个值与大 pandas 匹配时的累计计数 [英] Cumulative count when two values match pandas
本文介绍了两个值与大 pandas 匹配时的累计计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试创建一个新的 Column
,它根据单独的列
中的值显示一个累计计数
.
I am trying to create a new Column
that displays a cumulative count
based off values in separate columns
.
因此对于下面的代码,我试图基于 Cause
和 Answer
Columns
创建两个新列.因此,对于 Column Answer
中的值,如果 In
位于 Column Cause
中,我想在新列中提供累积计数.>
So for the code below, I'm trying to create two new columns based off Cause
and Answer
Columns
. So for the values in Column Answer
, if In
is situated in Column Cause
I want to provide a cumulative count in a new column.
import pandas as pd
d = ({
'Cause' : ['In','','','In','','In','In'],
'Answer' : ['Yes','No','Maybe','No','Yes','No','Yes'],
})
df = pd.DataFrame(d)
输出:
Answer Cause
0 Yes In
1 No
2 Maybe
3 No In
4 Yes
5 No In
6 Yes In
预期输出:
Answer Cause Count_No Count_Yes
0 Yes In 1
1 No
2 Maybe
3 No In 1
4 Yes
5 No In 2
6 Yes In 2
我尝试了以下操作,但出现错误.
I have tried the following but get an error.
df['cumsum'] = df.groupby(['Answer'])['Cause'].cumsum()
推荐答案
无for循环:-)
s=df.loc[df.Cause=='In'].Answer.str.get_dummies()
pd.concat([df,s.cumsum().mask(s!=1,'')],axis=1).fillna('')
Out[62]:
Answer Cause No Yes
0 Yes In 1
1 No
2 Maybe
3 No In 1
4 Yes
5 No In 2
6 Yes In 2
这篇关于两个值与大 pandas 匹配时的累计计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文