我以 3 小時的頻率生成了 Timestemp 索引,并將其分配給包含未來 10 天以 3 小時為間隔的天氣預測資料的資料框。由于 3 小時的頻率日期在針對每個值的索引中重復,但我想對每個日期及其各自的資料進行分組,我已經嘗試過 groupby,但它完全改變了我的資料幀值。這個問題有什么解決方案嗎?
df['Hours'] = pd.date_range(start= start_time , periods=81, freq='3h')
df['Days'] = df['Hours'].dt.day_name()
df.index = df.Hours
df = df.drop('Hours',1)
df = df.drop('Days',1)
##df.groupby(['Days', 'Hours'])['Days'].nunique()
df
MSL TEMPERATURE DPT RH% PRECIPITATION CLOUD COVER
Hours
2021-12-20 00:00:00 1019.4 7.9 -9.7 27.4 0.00 6.8
2021-12-20 03:00:00 1019.4 7.5 -9.9 27.9 0.00 8.9
2021-12-20 06:00:00 1018.3 6.7 -10.3 28.6 0.00 6.4
2021-12-20 09:00:00 1019.2 7.9 -9.0 29.1 0.00 0.8
2021-12-20 12:00:00 1018.6 14.5 -7.7 20.8 0.00 0.9
... ... ... ... ... ... ...
2021-12-29 12:00:00 1024.2 12.1 -1.4 38.9 0.00 82.8
2021-12-29 15:00:00 1021.5 14.2 -1.8 32.9 0.01 99.8
2021-12-29 18:00:00 1021.7 10.6 -1.3 43.7 0.00 99.9
2021-12-29 21:00:00 1023.7 8.7 -2.3 45.8 0.00 91.5
2021-12-30 00:00:00 1024.4 7.9 -2.4 48.1 0.00 59.7
uj5u.com熱心網友回復:
Pandas 資料框是一個表結構,所以只有你可以合并一些列的地方是index. 合并在引號中,因為它被可視化為熊貓的“合并”。
我簡化了您的示例資料以顯示它將如何可視化。
>>> df
time MSL TEMPERATURE
2021-12-20T00:00:00 1019.4 7.9
2021-12-20T03:00:00 1019.4 7.5
2021-12-20T06:00:00 1018.3 6.7
2021-12-20T09:00:00 1019.2 7.9
2021-12-21T00:00:00 1019.2 7.9
2021-12-21T03:00:00 1019.2 7.9
2021-12-21T06:00:00 1019.2 7.9
2021-12-21T09:00:00 1019.2 7.9
2021-12-22T00:00:00 1019.2 7.9
創建一列進行匯總。
>>> df['date'] = df.time.dt.date
>>> df['hour'] = df.time.dt.time
>>> df
time MSL TEMPERATURE date hour
2021-12-20T00:00:00 1019.4 7.9 2021-12-20 00:00:00
2021-12-20T03:00:00 1019.4 7.5 2021-12-20 03:00:00
2021-12-20T06:00:00 1018.3 6.7 2021-12-20 06:00:00
2021-12-20T09:00:00 1019.2 7.9 2021-12-20 09:00:00
2021-12-21T00:00:00 1019.2 7.9 2021-12-21 00:00:00
2021-12-21T03:00:00 1019.2 7.9 2021-12-21 03:00:00
2021-12-21T06:00:00 1019.2 7.9 2021-12-21 06:00:00
2021-12-21T09:00:00 1019.2 7.9 2021-12-21 09:00:00
2021-12-22T00:00:00 1019.2 7.9 2021-12-22 00:00:00
然后,set_index在這些列上使用。這將創建 MultiIndex,它將顯示按第一個索引分組的資料。
請查看https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html了解更多詳情。
>>> df.set_index(['date', 'hour'])
MSL TEMPERATURE
date hour
2021-12-20 00:00:00 1019.4 7.9
03:00:00 1019.4 7.5
06:00:00 1018.3 6.7
09:00:00 1019.2 7.9
2021-12-21 00:00:00 1019.2 7.9
03:00:00 1019.2 7.9
06:00:00 1019.2 7.9
09:00:00 1019.2 7.9
2021-12-22 00:00:00 1019.2 7.9
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/389502.html
