使用groupby或pivot_表转换数据帧

2024-05-15 05:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它由时间戳(每小时)组成,应该按每5行分组,每小时的降雨量。这种情况下的问题是,一些应该分组在一起的时间戳具有不同的日期,因为一些时间戳超过了午夜。我的原件df

           Datum            HH  DayPrecipitation
9137    2016-01-16 18:00:00 18  0
9138    2016-01-16 19:00:00 19  6
9139    2016-01-16 20:00:00 20  0
...         ...             ... ...
44874   2020-02-13 19:00:00 19  0
44875   2020-02-13 20:00:00 20  0
44878   2020-02-13 23:00:00 23  0

我希望这是一个广泛的格式,看起来像这样:

其中时间戳1-5是前一行的每5行,值来自df['DayPrecipitation']

       Datum               timestamp1   timestamp2 ... timestamp 5
    2016-01-16                  0            6              0
    2020-02-13                  0            0              0

我不知道该怎么做,因为按日期分组不会给出我需要的结果,但我不知道每5行分组一次。 非常感谢您的帮助!谢谢


Tags: 数据df格式hh时间情况timestamp原件
1条回答
网友
1楼 · 发布于 2024-05-15 05:22:43

我将首先以'5H'频率对数据帧重新采样。然后添加两列:一列用于日期,另一列用于时间戳,时间戳是小时除以5(整数除法)。从这一点开始pivot将给出预期的数据帧

这里我假设Datum列包含真正的时间戳。如果它包含其他类型,则必须使用df['Datum'] = pd.to_datetime(df['Datum'])对其进行更改。代码可以是:

df5 = df[['Datum', 'DayPrecipitation']].resample('5H', on='Datum').sum().reset_index()
df5['timestamp'] = df5['Datum'].dt.hour // 5
df5['Datum'] = df5['Datum'].dt.date
resul = df5.pivot('Datum', 'timestamp', 'DayPrecipitation')

但是每5天只有4个时间戳,因此第5天将是一个NaN

相关问题 更多 >

    热门问题