[英]How to transpose dataframe and perform count?
我正在嘗試轉置我的 dataframe 並通過 var1 和 var2、state 和年份變量中的值進行計數。
這是我的 dataframe:
year var1 var2 state
2019 1 1 AL
2019 4 3 AL
2020 1 2 AL
2019 2 3 CA
2020 1 2 CA
2020 3 2 CA
2020 4 1 CA
這就是我想要做的:
variable value state 2019 2020
var1 1 AL 1 1
var1 2 AL 0 0
var1 3 AL 0 0
var1 4 AL 1 0
var1 1 CA 0 1
var1 2 CA 1 0
var1 3 CA 0 1
var1 4 CA 0 1
var2 1 AL 1 0
var2 2 AL 0 1
var2 3 AL 1 0
var2 1 CA 0 1
var2 2 CA 0 2
var2 3 CA 1 0
我怎么能 go 關於這樣做?
一種可能是melt
和pivot_table
:
out = (df
.melt(['year', 'state'])
.assign(x=1)
.pivot_table(index=['variable', 'value', 'state'],
columns='year', values='x',
aggfunc='count', fill_value=0
)
.reset_index()
)
或melt
和crosstab
:
df2 = df.melt(['year', 'state'])
out = (pd.crosstab([df2['variable'], df2['value'], df2['state']],
df2['year'])
.reset_index()
)
Output:
year variable value state 2019 2020
0 var1 1 AL 1 1
1 var1 1 CA 0 1
2 var1 2 CA 1 0
3 var1 3 CA 0 1
4 var1 4 AL 1 0
5 var1 4 CA 0 1
6 var2 1 AL 1 0
7 var2 1 CA 0 1
8 var2 2 AL 0 1
9 var2 2 CA 0 2
10 var2 3 AL 1 0
11 var2 3 CA 1 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.