我有一個如下所示的資料框
ID,Region,year,output
1,ANZ,1978,1
1,ANZ,2019,1
1,ANZ,2021,1
1,ASEAN,2021,1
1,ASEAN,2021,2
1,ASEAN,2020,3
2,UK,2021,8
2,UK,2021,1
2,UK,2021,0
我想做以下
a) 創建 4 年的列year_2019,year_2020,year_2021 and year_2022。
b)將每個記錄的計數放在ID相應的year列下
我嘗試了以下
pd.crosstab(
index=tf['ID'], columns=tf['year'],
values=tf['year'], aggfunc='count').fillna(0)
但問題是它將所有年份值轉換為輸出資料框中的列。
我的真實資料框有 400 萬行,有 50 個獨特的年份值。(從 1970 年到 2022 年)
但我只想計算 2019、2020、2021 和 2022 年的年份值。
我希望我的輸出如下
ID,year_2019,year_2020,year_2021,year_2022
1,1,1,3,0
2,0,0,3,0
uj5u.com熱心網友回復:
您可以使用:
out = (pd
.crosstab(df['ID'], df['year'])
.reindex(range(2019, 2022 1), axis=1, fill_value=0)
.add_prefix('year_')
.reset_index()
.rename_axis(columns=None)
)
輸出:
ID year_2019 year_2020 year_2021 year_2022
0 1 1 1 3 0
1 2 0 0 3 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/491951.html
標籤:Python 熊猫 列表 数据框 熊猫-groupby
下一篇:在串列中查找值
