获取两行之间以天为单位的时间差



我写了一个可以工作的代码,但是我很确定我可以使用一些pandas函数使它更好。如果你能给我一些建议,我会很感激的。

作为背景,我已经抓取了一些社交媒体帖子,我想得到两个帖子之间的时间差(以天为单位)(我为不同的搜索关键字做了这个)。

DF是这样的:
-关键字,日期
0서예지2021-07-25
1서예지2021-07-25
2서예지2021-07-25
3서예지2021-07-25
4서예지2021-07-22
... ... ...
8808 13:00 00
8809 13:00 00
8810 13:00 00
8811 13:00 00
8812 13:00 00

我写了这段代码,它给了我我想要的结果:一个以天为单位的列,在这一行和前一行之间的时间差。

(第8列为日期列)

df_score = df_score.sort_values(by='date', ascending=True)
df_score['time_diff'] = pd.Series('', dtype='timedelta64[ns]')
temp2 = pd.DataFrame()
for keyword in df_score['keyword'].unique(): 
temp = df_score.loc[df_score['keyword']==f'{keyword}']
temp.iat[0,-1] = temp.iat[0,8] - temp.iat[0,8] # set first value of the table to 0
for i in range(1, len(temp['score'])):
temp.iat[i,-1] = temp.iat[i,8] - temp.iat[i-1,8]

temp2 = temp2.append(temp)
df_score['time_diff'] = temp2['time_diff']

我该如何改进它?我认为当pandas函数存在时,使用一个循环是不理想的。

试试这个:

df_score['time_diff'] = df_score.groupby('keyword')['date'].diff()

最新更新