簡體   English   中英

將多列值的出現次數匯總為熊貓數據框

[英]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.

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