我有一个Pandas 数据框架(我简化了表格,示例中显示了一个日期),我想计算由唯一来源发布的两条新闻之间的平均每日时间

Input

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  

Desired_output

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 

My Attempt

我将datetime合并到一个时间戳中,并将其命名为datetime

df.sort_values('datetime').groupby('source')['datetime'].apply(lambda x: x.diff().dt.seconds.mean()/60)

Issue

它计算所有日期组合的平均时间,而不是单独日期的平均时间.如何显示单独日期的平均时间?

推荐答案

time列转换为timedelta,然后将group数据帧转换为sourcedate,并使用lambada函数聚合time,以计算行与行之间diffmean

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相关问答推荐

来自ARIMA结果的模型方程

将词典写入Excel

将嵌套列表的字典转换为数据框中的行

有没有方法可以修复删除了换码字符的无效的SON记录?

如何在超时的情况下同步运行Matplolib服务器端?该过程随机挂起

请从Python访问kivy子部件的功能需要帮助

覆盖Django rest响应,仅返回PK

Odoo -无法比较使用@api.depends设置计算字段的日期

如何根据条件在多指标框架上进行groupby

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

Pydantic 2.7.0模型接受字符串日期时间或无

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

Python上的Instagram API:缺少client_id参数"

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

无法通过python-jira访问jira工作日志(log)中的 comments

如何获得每个组的时间戳差异?

未知依赖项pin—1阻止conda安装""

Tkinter菜单自发添加额外项目

python panda ExcelWriter切换动态公式到数组公式

Odoo16:模板中使用的docs变量在哪里定义?