【发布时间】:2020-07-07 07:01:14
【问题描述】:
我无法获取 timedelta 列的平均值。
我的数据如下所示:
user date Flag Value
0 ron 12/23/2016 'flag' 0 days 10:08:00
1 ron 12/21/2016 'n/a' 0 days 08:00:00
2 ron 12/23/2016 'flag' 0 days 10:08:00
3 ron 12/21/2016 'n/a' 0 days 02:00:00
4 andy 12/22/2016 'flag' 0 days 10:00:00
5 andy 12/22/2016 'flag' 0 days 10:00:00
我想通过根据 Flag==flag 获取每个用户的 Value 的平均值来生成 Avg 列。所以数据应该是这样的:
user date Flag Value Avg
0 ron 12/23/2016 'flag' 0 days 10:08:00 0 days 10:08:00
1 ron 12/21/2016 'n/a' 0 days 08:00:00 0 days 10:08:00
2 ron 12/23/2016 'flag' 0 days 10:08:00 0 days 10:08:00
3 ron 12/21/2016 'n/a' 0 days 02:00:00 0 days 10:08:00
4 andy 12/22/2016 'flag' 0 days 10:00:00 0 days 10:00:00
5 andy 12/22/2016 'flag' 0 days 10:00:00 0 days 10:00:00
我有这段代码会产生数据错误:
sample.loc[:,'Value'] = pd.to_timedelta(sample['Value'])
sample.loc[:,'Avg'] = sample['user'].map(sample[sample['Flag']=='flag'].groupby('user')['Value'].mean())
但这是我得到的错误:
DataError: No numeric types to aggregate
我不确定当我将 Value 转换为 timedelta 时为什么会这样说。指导表示赞赏。
【问题讨论】:
标签: python pandas group-by transform timedelta