簡體   English   中英

我想對列名進行分組並將它們的值添加到 df 中

[英]I want to group column names and add their values in a df

這是我正在使用的 df:

            2000-01    2000-02    2000-03   ...     2016-06  2016-07  2016-08
0            NaN        NaN        NaN   ...      590200   588000   586400
1       204400.0   207000.0   209800.0   ...      580600   583000   585100
2       136800.0   138300.0   140100.0   ...      209100   211000   213000
3        52700.0    53100.0    53200.0   ...      127400   128300   129100
4       111000.0   111700.0   112800.0   ...      192800   194500   195900
5       131700.0   132600.0   133500.0   ...      198200   199300   200600

我想按季度每 3 個月分組並添加它們的值。 所以它應該有這樣的列: 2000q1, 2000q2... 並且 2000q1 的值應該是 2000-01, 2000-02, 2000-03 值的總和。 等等...

現在我使用 for 嵌套循環來做這個,這是非常低效和緩慢的。 知道如何使這更有效和更短嗎?

設置

cols = pd.date_range('2000-01-31', '2001-08-31', freq='M').strftime('%Y-%m')
df = pd.DataFrame(1, index=range(3), columns=cols)

解決方案

使用pd.to_datetime轉換,然后使用.to_period('Q')轉換,然后使用axis=1進行groupby

df.groupby(pd.to_datetime(df.columns).to_period('Q'), axis=1).sum()

   2000Q1  2000Q2  2000Q3  2000Q4  2001Q1  2001Q2  2001Q3
0       3       3       3       3       3       3       2
1       3       3       3       3       3       3       2
2       3       3       3       3       3       3       2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM