首页 > 解决方案 > 如何使用 pandas 将 8760x2 DataFrame 转换为 365x25 DataFrame?

问题描述

我正在尝试转换具有以下数据的 8760x2 pandas DataFrame:

 [Datetime]...[Value]
 01-01-2019 00:00...1
 01-01-2019 01:00...1
 etc.

进入 365x25 数据帧:

 [Date]...[hour 0]...[hour 1]...until [hour 23]
 01-01-2019...1...1...etc.
 etc.

我已经做了这个:

Date= pd.DataFrame(df.drop_duplicates(subset='Date'))
Date= pd.DataFrame(Date.Date)

Newdf = pd.DataFrame()
for i in arange(0, 24):
    if i == 0:
        Newdf.insert(0, "Date", Date['Date'])
    Newdf.insert(int(i), "hour "+str(i), NaN*len(Newdf))

我得到的是 NaN 而不是数字。还应该检查日期,因为有时我会遇到闰年和时间变化(夏季,冬季)的问题......

最好的方法是什么?

提前致谢!

标签: pythonpandasdataframe

解决方案


IIUC,你可以这样做:

df['Datetime'] = pd.to_datetime(df['Datetime'])
df['Date'] = df['Datetime'].dt.date
df['Hour'] = df['Datetime'].dt.hour

df.pivot(index='Date', columns='Hour', values='Value')

推荐阅读