我有一個這樣的資料框
Date Search Volume
Jan 2004 80,000
Feb 2004 90,000
Mar 2004 100,000
Apr 2004 40,000
May 2004 60,000
Jun 2004 50,000
我希望有這樣的輸出:
Date Search Volume Total Quarter
Jan 2004 80,000 270,000 2004Q1
Feb 2004 90,000 270,000 2004Q1
Mar 2004 100,000 270,000 2004Q1
Apr 2004 40,000 150,000 2004Q2
May 2004 60,000 150,000 2004Q2
Jun 2004 50,000 150,000 2004Q2
...
...
Aug 2022 50,000 100,000 2022Q3
Sep 2022 10,000 100,000 2022Q3
Oct 2022 40,000 100,000 2022Q3
所以我想要做的是每 3 行(季度)求和并創建一個名為 total 的新列,并將總和應用于屬于該季度的每一行。另一列應該是 Quarter,表示該月所屬的季度。
我試過這個:
N = 3
keyvolume=keyvol.groupby(keyvol.index // 3).sum()
但這只會產生一個總和,不確定如何在該季度每 3 行應用這些值,而且我不知道如何生成季度列。
感謝你的幫助。
uj5u.com熱心網友回復:
首先將列轉換Search Volume為數字 bySeries.str.replace并轉換為整數或浮點數,然后將日期轉換為季度 byto_datetime和Series.dt.to_periodfor 新列GroupBy.transform與sum每季度一起使用:
def func(df):
df['Search Volume'] = df['Search Volume'].str.replace(',','', regex=True).astype(int)
q = pd.to_datetime(df['Date']).dt.to_period('q')
df['Total'] = df['Search Volume'].groupby(q).transform('sum')
df['Quarter'] = q
return df
out = func(df)
print (out)
Date Search Volume Total Quarter
0 Jan 2004 80000 270000 2004Q1
1 Feb 2004 90000 270000 2004Q1
2 Mar 2004 100000 270000 2004Q1
3 Apr 2004 40000 150000 2004Q2
4 May 2004 60000 150000 2004Q2
5 Jun 2004 50000 150000 2004Q2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/527337.html
上一篇:NumpyArrayReshaping需要3個小時。有沒有辦法讓它更快?
下一篇:如何在熊貓資料框中提取特定句子?
