![](/img/trans.png)
[英]count occurrence of a value in multiple columns of a dataframe Pandas
[英]Sumarize the occurrence number of multiple columns values as a pandas dataframe
考慮到我有一個具有以下結構的數據框:
Symbol CS
0 A1 MSI
1 A2 MSI
2 A3 GS
3 A2 EBV
4 A2 CIN
5 A1 GS
6 A2 MSI
...
我想要一個將CS列作為標題和Symbol列作為索引進行分類的數據框。 值將是CS類型中每個符號的出現。 例如,上述數據框的預期輸出為:
MSI EBV CIN GS
A1 1 0 0 1
A2 2 1 1 0
A3 0 0 0 1
解決這個特殊情況的最佳方法是什么?
您可以使用crosstab
pd.crosstab(df.Symbol,df.CS)
Out[862]:
CS CIN EBV GS MSI
Symbol
A1 0 0 1 1
A2 1 1 0 2
A3 0 0 1 0
一種方法是先使用pd.value_counts
,再使用pd.pivot_table
。
編輯:但是實際上您應該使用@Wen的解決方案 。
counts = df.groupby('Symbol')['CS'].apply(pd.value_counts).reset_index()
res = counts.pivot_table(index='Symbol', columns='level_1', values='CS',
fill_value=0, aggfunc=lambda x: x)
print(res)
# level_1 CIN EBV GS MSI
# Symbol
# A1 0 0 1 1
# A2 1 1 0 2
# A3 0 0 1 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.