Python Pandas:基于多个条件的累积和

时间:2017-11-09 00:45:30

标签: python pandas

我正在计算总计'第一个'位置列的值(下表),并希望使用多个条件来执行此操作。

我希望总'第一'位置来反映特定运动员赢得比赛的次数(截至某一天)。

例如......见下文史蒂夫的总第一位增加1:运动员=史蒂夫和位置= 1.我想为所有运动员做这个。

enter image description here

我试过以下......

df['Total 1st Position'] = ((df['Position'] == '1') & (df['Athlete'] == df['Athlete'])).cumsum()

...但这仅返回df ['Position'] =='1'的次数的运行总和

我做错了什么?

2 个答案:

答案 0 :(得分:1)

创建一个临时列来表示胜利,然后在.groupby上使用.cumsum

df['won'] = (df['Position'] == '1') * 1
df['Total 1st Position'] = df.groupby('Athlete').won.cumsum()

答案 1 :(得分:1)

你可以这样做:

import com.orm.SugarRecord

class Job : SugarRecord()
{

如果我们通过此运行您的数据框,我们会得到以下结果:

df = your_file

df.loc[(df['Position'] == 1), 'firsts'] = 1
df=df.fillna(0)

df['Total 1st Position'] = (df['firsts']*df['Position']).groupby(df['Athlete']).cumsum()