计算数据帧 Pandas 的多列中某个值的出现次数

Leg*_*gna 2 python group-by dataframe pandas pandas-groupby

我想计算整个数据框中多列中字符串值的出现次数,例如:

df = pd.DataFrame({'type1':['A11','B11','A11','A'],
                     'type2':['A12','C','A12','D11'],
                     'type3':['C','D11','B','D12'],
                     'type4':[np.nan,'E12','C','E']
                    })
df

       type1    type2   type3   type4 
    0   A11      A12      C      NaN     
    1   B11       C      D11     E12     
    2   A11      A12      B       C      
    3    A       D11     D12      E     
Run Code Online (Sandbox Code Playgroud)

我希望能够计算这 4 列中的每个不同值,例如:

value count
 A11    2
 A12    2
 C      3
 B11    1
 D11    2
 D12    1
 E12    3
 B      1
 A      1
 E      1
Run Code Online (Sandbox Code Playgroud)

Ony*_*mbu 5

df.stack().value_counts()

C      3
A11    2
A12    2
D11    2
B11    1
E12    1
B      1
A      1
D12    1
E      1
Run Code Online (Sandbox Code Playgroud)

如果您需要名称:

df.stack().value_counts().reset_index(name='count').rename({'index':'value'}, axis = 1)
 
  value  count
0     C      3
1   A11      2
2   A12      2
3   D11      2
4   B11      1
5   E12      1
6     B      1
7     A      1
8   D12      1
9     E      1
Run Code Online (Sandbox Code Playgroud)