簡體   English   中英

如何轉置 dataframe 並進行計數?

[英]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 關於這樣做?

一種可能是meltpivot_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()
 )

meltcrosstab

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.

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