我正在尝试转换一个具有以下数据的8760x2熊猫数据框:
[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而不是数字。还应该检查日期,因为有时我会遇到a年和时间更改(夏季,冬季)的问题...
执行此操作的最佳方法是什么?
谢谢!
答案 0 :(得分:3)
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')