Python Pandas Timedelta特定行

2024-06-01 04:45:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个赛季篮球得分的数据框,我想找出每支球队在这个赛季中每场比赛的比赛间隔天数。在

示例框架:

  testDateFrame = pd.DataFrame({'HomeTeam': ['HOU', 'CHI', 'DAL', 'HOU'],
                          'AwayTeam' : ['CHI', 'DAL', 'CHI', 'DAL'],
                          'HomeGameNum': [1, 2, 2, 2],
                          'AwayGameNum' : [1, 1, 3, 3],
                          'Date' : [datetime.date(2014,3,11), datetime.date(2014,3,12),     datetime.date(2014,3,14), datetime.date(2014,3,15)]})

我想要的输出是:

^{pr2}$

其中AwayRest,HomeRest列是AwayTeam,HomeTeam-1的比赛间隔天数


Tags: 数据框架示例datetimedate间隔dal天数
1条回答
网友
1楼 · 发布于 2024-06-01 04:45:55

我将稍微调整一下您的数据布局,使其符合hadleywickhams对Tidy Data的定义。这使得计算简单得多。消除AwayTeamHomeTeam的列,并使用Team生成一个列。然后装箱一个布尔列(HomeTeam)来判断团队是否是主队。在

注意:我没有更改AwayGameNumHomeGameNum,因此这些数字与您期望的输出不匹配。但这种方法会奏效的。

In [34]: df
Out[34]: 
   AwayGameNum Team       Date  HomeGameNum HomeTeam
0            1  CHI 2014-03-11            1    False
1            1  HOU 2014-03-11            1     True
2            1  DAL 2014-03-12            2    False
3            1  CHI 2014-03-12            2     True
4            3  CHI 2014-03-14            2    False
5            3  DAL 2014-03-14            2     True
6            3  DAL 2014-03-15            2    False
7            3  HOU 2014-03-15            2     True

[8 rows x 5 columns]

In [62]: rest = df.groupby(['Team'])['Date'].diff() - datetime.timedelta(1)

In [63]: df['HomeRest'] = rest[df.HomeTeam]

In [64]: df['AwayRest'] = rest[~df.HomeTeam]

In [65]: df
Out[65]: 
   AwayGameNum Team       Date  HomeGameNum HomeTeam  HomeRest  AwayRest
0            1  CHI 2014-03-11            1    False       NaT       NaT
1            1  HOU 2014-03-11            1     True       NaT       NaT
2            1  DAL 2014-03-12            2    False       NaT       NaT
3            1  CHI 2014-03-12            2     True    0 days       NaT
4            3  CHI 2014-03-14            2    False       NaT    1 days
5            3  DAL 2014-03-14            2     True    1 days       NaT
6            3  DAL 2014-03-15            2    False       NaT    0 days
7            3  HOU 2014-03-15            2     True    3 days       NaT

[8 rows x 7 columns]

相关问题 更多 >