【问题标题】:How to do datetime subtraction in Python based on conditions如何根据条件在 Python 中进行日期时间减法
【发布时间】:2016-04-29 08:29:28
【问题描述】:

我有一个如下所示的数据框:

Sample Dataframe

我想添加一个列来计算自上一场比赛以来的天数(即该行的 GAME_DATE 与上一场比赛的 GAME_DATE 之间的差异)。

所以结果应该是:

Sample Dataframe Plus Desired New Column

最有效的方法是什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:
    with open('file.txt', 'r') as file, open('file_copy.txt', 'w') as file_to_write:
        for i, line in enumerate(file):
            line = line.rstrip('\r').rstrip('\n')
            if i == 0:
                file_to_write.write(line + '    DAYS_SINCE_LAST_GAME' + '\n')
            else:
                file_to_write.write(line + '   nan' + '\n')
    

    【讨论】:

      【解决方案2】:

      假设你的数据在df:

      df.GAME_DATE = pd.to_datetime(df.GAME_DATE)
      
      # Create a new column
      df['DAYS_SINCE_LAST_GAME'] = None
      res = list(df.groupby(df.PLAYER).GAME_DATE)
      
      for i in range(len(res)):
          df.loc[df.PLAYER == res[i][0], 'DAYS_SINCE_LAST_GAME'] = \
                      res[i][1].diff().replace(0, pd.NaT).fillna(None, 'ffill').dt.days
      

      它基本上是按玩家分组数据并计算时间差并填写差额。最后一部分留给读者练习。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-13
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 2022-11-30
        • 1970-01-01
        • 2018-11-15
        相关资源
        最近更新 更多