我有一個資料框p90results,其中包含從 1952 年 12 月 1 日到 2021 年 12 月 31 日的每日溫度超標計數。

我想創建一個圖來總結每年冬季的每日超量。問題是冬季月份,12 月、1 月和 2 月分布在 2 年內。所以我認為 1951 年的冬天是 1951 年 12 月、1952 年 1 月和 1952 年 2 月。
我的第一個想法是做一個 if 陳述句,為 12 月份的年份增加一個。這樣我就可以按年分組并擁有正確的冬季月份。這是我嘗試過的:
for index, row in p90results.iterrows():
if p90results.index.month==12:
p90results.index.year=p90results.index.year 1
但是當我這樣做時,我得到以下錯誤:ValueError:具有多個元素的陣列的真值是不明確的。使用 a.any() 或 a.all()
有沒有辦法改變 12 月的年份,以便我以后更容易進行繪圖?
uj5u.com熱心網友回復:
我就是這樣做的。這不是最漂亮的,但它有效:
index = pd.date_range('2000-01-01', '2020-01-01', freq='1M')
df = pd.DataFrame({'high': np.random.randint(0,2, size=index.size), 'date':index})
date_offset = (df.date.dt.month*100 df.date.dt.day - 320)%1300
df['winter'] = date_offset > 900
df['winter_yr'] = np.where((month < 6) & (df.winter), df.date.dt.year - 1, df.date.dt.year)
歸功于數字技巧
uj5u.com熱心網友回復:
您可以從將“冬季”標簽應用于相關月份開始。之后,您可以應用其他邏輯來確定分組。
df = pd.DataFrame({'Date': pd.date_range(start='1951-09-01 00:00:00', periods=180)})
df['season'] = np.where(df['Date'].dt.month.isin([12,1,2]), 'winter', np.nan)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475079.html
