Pandas 熊猫在两列内重新采样数据

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-

我有一个带有日期时间的数据框,我想将其重采样到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-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()
对不起,我的错了。我要做一条新线。你最后的解决方案不是我想要的。我将在新的帖子中澄清。