选择具有设定时间段最早时间值的数据帧行
Selecting the data frame row with the earliest time value for a set period
我在 r 中有一个 df,其中包含以下格式的大量记录,12 小时内有 'arrival_time' 个值'。
id
arrival_time
wait_time_value
1
2020-02-20 12:02:00
10
2
2020-02-20 12:04:00
5
99900
2020-02-20 23:47:00
8
10000
2020-02-20 23:59:00
21
我想创建一个新的 df,它在到达时间段的每个 15 分钟时段和该时段中最早到达时间的记录的 wait_time_value 有一行。因此,在上面的示例中,新 df 的第一行和最后一行将如下所示:
id
period_start
wait_time_value
1
2020-02-20 12:00:00
10
48
2020-02-20 23:45:00
8
我使用下面的代码来实现每 15 分钟范围内所有记录的平均平均等待时间,但我不确定如何 select 最早记录的值?
df$period_start <- align.time(df$arrival_time- 899, n = 60*15)
avgwait_df <- aggregate(wait_time_value ~ period_start, df, mean)
使用 DataFrame.resample
with GroupBy.first
,仅删除 NaN
并转换为 DataFrame
:
df['arrival_time'] = pd.to_datetime(df['arrival_time'])
df = (df.resample('15Min', on='arrival_time')['wait_time_value']
.first()
.dropna()
.reset_index(name='wait_time_value'))
print (df)
arrival_time wait_time_value
0 2020-02-20 12:00:00 10.0
1 2020-02-20 23:45:00 8.0
使用dplyr
:
df %>%
group_by(period_start) %>%
summarise(wait_time = min(wait_time_value))
我在 r 中有一个 df,其中包含以下格式的大量记录,12 小时内有 'arrival_time' 个值'。
id | arrival_time | wait_time_value |
---|---|---|
1 | 2020-02-20 12:02:00 | 10 |
2 | 2020-02-20 12:04:00 | 5 |
99900 | 2020-02-20 23:47:00 | 8 |
10000 | 2020-02-20 23:59:00 | 21 |
我想创建一个新的 df,它在到达时间段的每个 15 分钟时段和该时段中最早到达时间的记录的 wait_time_value 有一行。因此,在上面的示例中,新 df 的第一行和最后一行将如下所示:
id | period_start | wait_time_value |
---|---|---|
1 | 2020-02-20 12:00:00 | 10 |
48 | 2020-02-20 23:45:00 | 8 |
我使用下面的代码来实现每 15 分钟范围内所有记录的平均平均等待时间,但我不确定如何 select 最早记录的值?
df$period_start <- align.time(df$arrival_time- 899, n = 60*15)
avgwait_df <- aggregate(wait_time_value ~ period_start, df, mean)
使用 DataFrame.resample
with GroupBy.first
,仅删除 NaN
并转换为 DataFrame
:
df['arrival_time'] = pd.to_datetime(df['arrival_time'])
df = (df.resample('15Min', on='arrival_time')['wait_time_value']
.first()
.dropna()
.reset_index(name='wait_time_value'))
print (df)
arrival_time wait_time_value
0 2020-02-20 12:00:00 10.0
1 2020-02-20 23:45:00 8.0
使用dplyr
:
df %>%
group_by(period_start) %>%
summarise(wait_time = min(wait_time_value))