我有一个 pandas 数据框(我有一个简化的表格,示例中显示了一个日期),我想计算由唯一来源发布的两条新闻之间的平均每日时间量
输入
source date time
Investing.com 2017-05-11 08:00:00
Investing.com 2017-05-11 12:00:00
Investing.com 2017-05-11 16:00:00
yahoo.com 2017-05-11 09:00:00
yahoo.com 2017-05-11 12:00:00
yahoo.com 2017-05-11 15:00:00
yahoo.com 2017-05-12 06:00:00
yahoo.com 2017-05-12 12:00:00
yahoo.com 2017-05-12 18:00:00
所需输出
source date Average_Daily_time
Investing.com 2017-05-11 04:00:00
yahoo.com 2017-05-11 03:00:00
yahoo.com 2017-05-12 06:00:00
我的尝试
我将日期时间合并到一个时间戳中,并将其称为日期时间
df.sort_values('datetime').groupby('source')['datetime'].apply(lambda x: x.diff().dt.seconds.mean()/60)
问题
它计算所有日期组合的平均时间,而不是单独日期的平均时间。如何显示不同日期的平均时间?
最佳答案
转换time
列至timedelta
,然后group
数据框 source
和date
和聚合time
使用 lambda 函数计算 mean
的diff
行与行之间
df['time'] = pd.to_timedelta(df['time'])
(
df.groupby(['source', 'date'])['time']
.agg(lambda d: d.diff().mean()).reset_index(name='avg')
)
source date avg
0 Investing.com 2017-05-11 0 days 04:00:00
1 yahoo.com 2017-05-11 0 days 03:00:00
2 yahoo.com 2017-05-12 0 days 06:00:00
关于python - 计算由唯一来源发布的两条新闻之间的平均每日时间量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72713113/