我正在计算总计'第一个'位置列的值(下表),并希望使用多个条件来执行此操作。
我希望总'第一'位置来反映特定运动员赢得比赛的次数(截至某一天)。
例如......见下文史蒂夫的总第一位增加1:运动员=史蒂夫和位置= 1.我想为所有运动员做这个。
我试过以下......
df['Total 1st Position'] = ((df['Position'] == '1') & (df['Athlete'] == df['Athlete'])).cumsum()
...但这仅返回df ['Position'] =='1'的次数的运行总和
我做错了什么?
答案 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()