這個問題在這里已經有了答案: Groupby 值對資料框 pandas 的計數 5 個答案 46 分鐘前關閉。
我正在為大學做一個專案,在該專案中我收到了一個資料框:
import numpy as np
import pandas as pd
df = pd.DataFrame({'City': ['PARIS', 'MADRI', 'RIO', 'RIO',
'PARIS', 'RIO', 'LISBOA', 'RIO'],
'Year': [2018, 2015, 2020, 2020,
2017, 2021, 2022, 2022]})
print(df)
City Year
PARIS 2018
MADRI 2015
RIO 2020
RIO 2020
PARIS 2017
RIO 2021
LISBOA 2022
RIO 2022
我需要建立一個資料框來顯示每個城市多年來出現的次數。所需的輸出是根據此示例資料框:
df_out_intended = pd.DataFrame({'Year': [2015,2016,2017,2018,2019,2020,2021,2022],
'PARIS': [0,0,1,1,0,0,0,0],
'MADRI': [1,0,0,0,0,0,0,0],
'RIO': [0,0,0,0,0,2,1,1],
'LISBOA': [0,0,0,0,0,0,0,1]
})
print(df_out_intended)
Year PARIS MADRI RIO LISBOA
2015 0 1 0 0
2016 0 0 0 0
2017 1 0 0 0
2018 1 0 0 0
2019 0 0 0 0
2020 0 0 2 0
2021 0 0 1 0
2022 0 0 1 1
我考慮過使用 groupby 來完成這項任務。實作如下:
df_test = df.groupby(['City', 'Year']).sum()
但是輸出不是我們想要的,輸出是:
print(df_test)
City Year
LISBOA 2022
MADRI 2015
PARIS 2017
2018
RIO 2020
2021
2022
我還嘗試使用 value_counts() 如下:
df_test2 = df(['City', 'Year']).value_counts()
但出現錯誤資訊:“TypeError: 'DataFrame' object is not callable”
uj5u.com熱心網友回復:
使用交叉表
pd.crosstab(df.Year,df.City)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/465571.html
