簡體   English   中英

在 Pandas 的單個 groupby 中添加多列

[英]Adding Multiple Columns in Single groupby in Pandas

數據集圖片

請幫忙,我有一個數據集,其中有從 2019 年到 1991 年的國家、天然氣和年份列。還附上了數據集的快照。 我想回答一個問題,我想明智地添加一個國家列的所有值? 例如,對於阿富汗,2019 年的數值應為 56.4(相加 28.79 + 6.23 + 16.37 + 5.01 = 56.4)。 現在我希望它應該計算每年的結果。 我使用以下代碼來實現 2019 年的數據。

df.groupby(by='Country')['2019'].sum() 

這是該代碼的 output:

Country
---------------------
Afghanistan     56.40
Albania         17.31
Algeria        558.67
Andorra          1.18
Angola         256.10
                ...  
Venezuela      588.72
Vietnam        868.40
Yemen           50.05
Zambia         182.08
Zimbabwe       235.06

我已經對數據國家/地區進行了分組並添加了 2019 列值,但是我應該如何在單行代碼中添加其他年份的值?

請幫忙。

我可以執行此處顯示的代碼,添加行並像這樣顯示多列,但這樣做將是一項繁瑣的任務,因此要寫下每一列的名稱。

df.groupby(by='Country')[['2019','2018','2017']].sum() 

如果您不指定列,它將對所有數字列求和。

df.groupby(by='Country').sum() 

                 2019   2020   ...
Country
Afghanistan     56.40   32.4   ...
Albania         17.31   12.5   ...
Algeria        558.67  241.5   ...
Andorra          1.18    1.5   ...
Angola         256.10   32.1   ...
                ...      ...   ...
Venezuela      588.72  247.3   ...
Vietnam        868.40  323.5   ...
Yemen           50.05   55.7   ...
Zambia         182.08   23.4   ...
Zimbabwe       235.06  199.4   ...

做一個reset_index()來展平列

df.groupby(by='Country').sum().reset_index()

Country          2020   2019   ...
Afghanistan     56.40   32.4   ...
Albania         17.31   12.5   ...
Algeria        558.67  241.5   ...
Andorra          1.18    1.5   ...
Angola         256.10   32.1   ...
                ...      ...   ...
Venezuela      588.72  247.3   ...
Vietnam        868.40  323.5   ...
Yemen           50.05   55.7   ...
Zambia         182.08   23.4   ...
Zimbabwe       235.06  199.4   ...

您可以通過以下方式在 dataframe 中使用 select 列鍵從2019列開始直到最后一列鍵:

df.groupby(by='Country')[df.keys()[2:]].sum() 

方法df.keys將返回列表中的所有 dataframe 列鍵,然后您可以從2019鍵的索引( 2到列鍵的末尾)對其進行切片。

假設您想要從20161992的 select 列:

df.groupby(by='Country')[df.keys()[5:-1]].sum() 

您只需要按照正確的索引順序對列鍵列表進行切片。

暫無
暫無

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

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