GroupBy对象中的数据处理。如何添加列?

时间:2018-08-12 20:02:14

标签: python pandas dataframe group-by pandas-groupby

我想在MLB数据集中获取每场比赛每个投手的最后投球并将其标记为True。但是,我在添加列或修改GroupBy对象中的数据框时遇到麻烦。如何有效添加此列?

Double.floatValue()

2 个答案:

答案 0 :(得分:1)

为此使用GroupBy很诱人。但是,当您不希望实际汇总数据时,通常会有其他方法。在这里,您可以将pd.Series.duplicatedkeep='last'结合使用:

# data from gyoza

df['last_pitch'] = ~df['pitcherId'].duplicated(keep='last')

print(df)

  gameString pitcherId  last_pitch
0          a         c       False
1          a         c        True
2          b         d       False
3          b         d       False
4          b         d        True

如果您确实希望使用GroupBy,则可以使用last方法:

idx = df.reset_index().groupby('pitcherId')['index'].last().values

df['last_pitch'] = df.index.isin(idx)

答案 1 :(得分:0)

一种方法是使用tail查找要更改的行的所有索引,然后使用loc在原始数据框中进行更改:

last_rows = data.groupby(['gameString', 'pitcherId']).tail(n=1)
data.loc[last_rows.index, 'last_pitch'] = True