Pandas 熊猫在两列内重新采样数据
我有一个带有日期时间的数据框,我想将其重采样到20分钟,并为所有组“name”计算列“trip”中给定的唯一值的数量Pandas 熊猫在两列内重新采样数据,pandas,count,resampling,Pandas,Count,Resampling,我有一个带有日期时间的数据框,我想将其重采样到20分钟,并为所有组“name”计算列“trip”中给定的唯一值的数量 name Date trip 0 4 2019-08-22 00:44:51 1 1 4 2019-08-22 00:45:40 1 2 4 2019-08-22 01:45:52 2 3 4 2019-08-22 01:44:51 2 4 4 2019-
name Date trip
0 4 2019-08-22 00:44:51 1
1 4 2019-08-22 00:45:40 1
2 4 2019-08-22 01:45:52 2
3 4 2019-08-22 01:44:51 2
4 4 2019-08-22 01:45:40 2
5 5 2019-08-22 01:45:52 3
6 5 2019-08-22 01:45:59 3
所需的输出如下所示:
Date Trip count
2019-08-22 00:40:00 1
2019-08-22 01:00:00 0
2019-08-22 01:20:00 0
2019-08-22 01:40:00 2
2019-08-22 02:00:00 0
所以行程是1,因为在00:40:00和01:00之间只有1次行程(从name=4)。
行程为2,因为在01:40:00和02:00之间有2次行程(从name=4和name=5)。
行程计数为0,否则请尝试以下操作:
DataFrame.groupby('Date').resample('20T').trip.nunique()
参考:
DataFrame.groupby('Date').resample('20T').trip.nunique()
参考:
使用数据帧设置索引。对行程的和nunique
重新采样:
# df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True)
dfn = df.set_index('Date').resample('20T')['trip'].nunique().reset_index(name='Trip count')
Date Trip count
0 2019-08-22 00:40:00 1
1 2019-08-22 01:00:00 0
2 2019-08-22 01:20:00 0
3 2019-08-22 01:40:00 2
您需要使用数据帧设置索引。对行程的重新采样和nunique
:
# df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True)
dfn = df.set_index('Date').resample('20T')['trip'].nunique().reset_index(name='Trip count')
Date Trip count
0 2019-08-22 00:40:00 1
1 2019-08-22 01:00:00 0
2 2019-08-22 01:20:00 0
3 2019-08-22 01:40:00 2
谢谢回复@Erfan,我喜欢这个解决方案。我的日期是2019-08-01 00:00:00到2019-08-31 00:40:00,你知道我如何获得白天“行程计数”的平均值吗?所以从00:00:00到23:40:00每20分钟平均值?很高兴我能帮上忙,我不喜欢人们在现有问题下提出新问题作为评论,但你想要的是:df.set_index('Date')。重采样('20T')['trip'].mean()
对不起,我的错了。我要做一条新线。你最后的解决方案不是我想要的。我会在新的帖子中澄清。谢谢@Erfan的回复,我喜欢这个解决方案。我的日期是2019-08-01 00:00:00到2019-08-31 00:40:00,你知道我如何获得白天“行程计数”的平均值吗?所以从00:00:00到23:40:00每20分钟平均值?很高兴我能帮上忙,我不喜欢人们在现有问题下提出新问题作为评论,但你想要的是:df.set_index('Date')。重采样('20T')['trip'].mean()
对不起,我的错了。我要做一条新线。你最后的解决方案不是我想要的。我将在新的帖子中澄清。