Python 分组方式中,每15分钟分组一次
我正在尝试将价值观分组,以便在业余时间使用。具体来说,我希望每15分钟返回一次值。我可以使用下面的方法来实现这一点。但我希望每15分钟返回一个值,即使值没有出现在df中。对于这些段,我将生成一个ffill,其中先前的值将分配给该段Python 分组方式中,每15分钟分组一次,python,pandas,group-by,Python,Pandas,Group By,我正在尝试将价值观分组,以便在业余时间使用。具体来说,我希望每15分钟返回一次值。我可以使用下面的方法来实现这一点。但我希望每15分钟返回一个值,即使值没有出现在df中。对于这些段,我将生成一个ffill,其中先前的值将分配给该段 import pandas as pd d = ({ 'Time' : ['0/1/1900 8:00:00','0/1/1900 9:59:00','0/1/1900 10:00:00','0/1/1900 12:29:00','0/1/1900 12:3
import pandas as pd
d = ({
'Time' : ['0/1/1900 8:00:00','0/1/1900 9:59:00','0/1/1900 10:00:00','0/1/1900 12:29:00','0/1/1900 12:30:00','0/1/1900 13:00:00','0/1/1900 13:02:00','0/1/1900 13:15:00','0/1/1900 13:20:00','0/1/1900 18:10:00','0/1/1900 18:15:00','0/1/1900 18:20:00','0/1/1900 18:25:00','0/1/1900 18:45:00','0/1/1900 18:50:00','0/1/1900 19:05:00','0/1/1900 19:07:00','0/1/1900 21:57:00','0/1/1900 22:00:00','0/1/1900 22:30:00','0/1/1900 22:35:00','1/1/1900 3:00:00','1/1/1900 3:05:00','1/1/1900 3:20:00','1/1/1900 3:25:00'],
'People' : [1,1,2,2,3,3,2,2,3,3,4,4,3,3,2,2,3,3,4,4,3,3,2,2,1],
})
df = pd.DataFrame(data = d)
df['Time'] = ['/'.join([str(int(x.split('/')[0])+1)] + x.split('/')[1:]) for x in df['Time']]
df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S')
df = df.groupby(df.Time.dt.floor('15T'))['People'].max()
print(df)
Time
1900-01-01 08:00:00 1
1900-01-01 09:45:00 1
1900-01-01 10:00:00 2
1900-01-01 12:15:00 2
1900-01-01 12:30:00 3
1900-01-01 13:00:00 3
1900-01-01 13:15:00 3
1900-01-01 18:00:00 3
1900-01-01 18:15:00 4
1900-01-01 18:45:00 3
1900-01-01 19:00:00 3
1900-01-01 21:45:00 3
1900-01-01 22:00:00 4
1900-01-01 22:30:00 4
1900-01-02 03:00:00 3
1900-01-02 03:15:00 2
本系列仅提供df中存在的组。是否可以通过前一组的正向填充来确定每15分钟段的值。是否可以更改以下函数以将值分配给这些段
df = df.groupby(df.Time.dt.floor('H'))['People'].max()
您可以按15分钟的频率对结果重新采样,并向前填充间隙:
df.set_index('Time').resample('15T').max().ffill().astype(int)
您可以按15分钟的频率对结果重新采样,并向前填充间隙:
df.set_index('Time').resample('15T').max().ffill().astype(int)
如果你想分组,你需要石斑鱼
如果你想分组,你需要石斑鱼
谢谢@DYZ。在SeriesThanks@DYZ上效果很好。在这个系列中效果很好