我有一个包含不同时间的数据框。我需要将这些时间按不同的时间间隔分类到新数据框中的新列中。
df7['Time_B'] = df6.groupby([df6['Arr_Time'],pd.TimeGrouper(freq='6H')])
期望包含Time_B的新列。 HH:MM中的到达时间应分类为不同的时间段,即12-6、6-12、12-18、18-24。我该怎么办?
答案 0 :(得分:0)
这就是我要做的事情:
from io import StringIO
import numpy as np
import pandas as pd
df7 = pd.read_csv(StringIO('''
Origin, Destination, Dept_Date, Dept_Time, Total_Fare
BLR, MAA, 2018-10-27, 00:45, 2635.0
BLR, MAA, 2018-10-27, 10:45, 2635.0
BLR, MAA, 2018-10-27, 11:45, 2635.0
BLR, MAA, 2018-10-27, 18:45, 2635.0
'''))
df7
要添加时隙:
df7["Departure"] = df7.apply(lambda x: pd.to_datetime(x[2] +' '+ x[3]), axis=1)
time_diff = df7.Departure - pd.to_datetime(df7.Departure.dt.date)
df7['Time_Slot'] = np.floor((time_diff / np.timedelta64(6, 'h')) )
interval_dict = {0.0:'00-06',
1.0:'06-12',
2.0:'12-18',
3.0:'18-24'}
df7['Time_B'] = df7.Time_Slot.map(interval_dict)
del df7["Departure"]
del df7["Time_Slot"]
希望这会有所帮助。可以压缩代码。