簡體   English   中英

Pandas:基於列值聚合數據框

[英]Pandas: Aggregate data frame based on column values

我有一個如下所示的數據集:

        Name Volume Period
1        oil  29000 Jun 21
2       gold    800 Mar 22
3        oil  21000 Jul 21
4       gold   1100 Sep 21
5       gold   3000 Feb 21
6    depower      3  Q1 21
7        oil  23000 Apr 22
8    czpower     26  Q1 23
9        oil  17000  Q1 21
10      gold   2400 May 21
11       oil  12000  Q2 21
12      gold   1800 Jan 22
13   czpower     21 Oct 21
14  api2coal   6000  Q1 22
15  api2coal  11000  Q1 21
16   depower     11 Jan 22
17  api2coal  16000 Jul 21
18      gold   1300 Mar 21
19   depower      3  Q1 22
20       oil  17000 Cal 21

我想重塑數據集,以獲得具有以下特征的數據框:

  • Name中的值將成為新的變量(列);
  • Period中的值將成為索引(應該是唯一的);
  • Volume中的值是NamePeriod的每個組合的值的總和。

生成的數據框應如下所示:

       Period api2coal czpower depower  gold     oil
    1: Apr 21   241000     273     213 42500  299000
    2: Apr 22   236000     360     234 55700  404000
    3: Aug 21   210000     270     305 70000  283000
    4: Aug 22   191000     307     236 63200  307000
    5: Cal 21   605000     648     852     0  765000
    6: Cal 22   710000     718     714     0  542000
    7: Cal 23   813000     875     872     0  844000
    8: Cal 24   642000     723     734     0  763000
    9: Cal 25   109000     164     274     0  195000
   10: Dec 21   229000     322     241 47000  254000
   11: Dec 22   135000     232     243 52900  240000
   12: Feb 21   474000     238     140 42500  292000
   13: Feb 22   509000     272     141 45700  270000
   14: Jan 21   210000     301     332 70300  122000
   15: Jan 22   206000     236     229 54200  180000
   16: Jan 23   350000     246     359 56700  208000
   17: Jul 21   281000     430     371 43500  287000
   18: Jul 22   355000     241     255 71200  160000
   19: Jun 21   341000     182     156 39900  278000
   20: Jun 22   180000     165     175 52100  348000

有人可以給我一個關於如何實現這一目標的提示嗎? 先感謝您。

這是你要找的嗎?

newDF = df.pivot_table("Volume", ["Period"], "Name")

在嘗試了幾件事后我找到了解決方案。

pd.pivot_table(df, values="Volume", index=["Period"], columns=["Name"], aggfunc=np.sum)

暫無
暫無

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

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