【发布时间】:2016-04-29 08:29:28
【问题描述】:
我有一个如下所示的数据框:
我想添加一个列来计算自上一场比赛以来的天数(即该行的 GAME_DATE 与上一场比赛的 GAME_DATE 之间的差异)。
所以结果应该是:
Sample Dataframe Plus Desired New Column
最有效的方法是什么?
【问题讨论】:
我有一个如下所示的数据框:
我想添加一个列来计算自上一场比赛以来的天数(即该行的 GAME_DATE 与上一场比赛的 GAME_DATE 之间的差异)。
所以结果应该是:
Sample Dataframe Plus Desired New Column
最有效的方法是什么?
【问题讨论】:
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')
【讨论】:
假设你的数据在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
它基本上是按玩家分组数据并计算时间差并填写差额。最后一部分留给读者练习。
【讨论】: