python - 为最近10个日期添加指标

时间:2016-11-06 22:02:52

标签: python pandas

我使用的是Python,我的数据包含团队名称和已经玩过的游戏日期,看起来像这样(除了几百行):

      team    date
0     TOR     2016/10/15
1     LAK     2016/10/20
2     CGY     2016/11/03
3     BUF     2016/10/30
4     PIT     2016/10/27
5     CHI     2016/11/05
6     VAN     2016/10/20
7     BUF     2016/10/16
8     STL     2016/10/13
9     BUF     2016/10/29
10    MIN     2016/10/29
11    PIT     2016/11/05
12    CHI     2016/10/18
13    BOS     2016/10/29
14    PIT     2016/10/20
15    COL     2016/10/20
16    MTL     2016/10/20
17    MTL     2016/11/05
18    BOS     2016/11/03
19    EDM     2016/11/05
20    NSH     2016/11/01

我想添加指标列,以显示每个团队最近的10个游戏,以及每个团队最近的5个游戏。如果他们在这个组中,则为1,如果不在,则为0。

我很难过。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为您可以使用SeriesGroupBy.nsmallestnumpy.whereisin选择索引:

df.date = pd.to_datetime(df.date)
#in real data use nsmallest(10)
idx = df.groupby('team')['date'].nsmallest(2).index.get_level_values(1)
df['indicator'] = np.where(df.index.isin(idx), 1, 0)

print (df)
   team       date  indicator
0   TOR 2016-10-15          1
1   LAK 2016-10-20          1
2   CGY 2016-11-03          1
3   BUF 2016-10-30          0
4   PIT 2016-10-27          1
5   CHI 2016-11-05          1
6   VAN 2016-10-20          1
7   BUF 2016-10-16          1
8   STL 2016-10-13          1
9   BUF 2016-10-29          1
10  MIN 2016-10-29          1
11  PIT 2016-11-05          0
12  CHI 2016-10-18          1
13  BOS 2016-10-29          1
14  PIT 2016-10-20          1
15  COL 2016-10-20          1
16  MTL 2016-10-20          1
17  MTL 2016-11-05          1
18  BOS 2016-11-03          1
19  EDM 2016-11-05          1
20  NSH 2016-11-01          1