簡體   English   中英

Python熊貓按兩列分組

[英]Python pandas group by two columns

我有一個熊貓數據框:

       code   type
index  
  312   11     21
  312   11     41 
  312   11     21
  313   23     22
  313   11     21
  ...   ...    

因此,我需要根據每個索引項的“代碼”和“類型”列對的計數將其分組:

        11_21   11_41  23_22
index  
  312       2      1      0
  313       1      0      1
  ...   ...   

如何用python和pandas實現它?

這是使用pd.crosstab然后使用級別信息重命名列名稱的一種方法。

In [136]: dff = pd.crosstab(df['index'], [df['code'], df['type']])

In [137]: dff
Out[137]:
code  11    23
type  21 41 22
index
312    2  1  0
313    1  0  1

In [138]: dff.columns = ['%s_%s' % c for c in dff.columns]

In [139]: dff
Out[139]:
       11_21  11_41  23_22
index
312        2      1      0
313        1      0      1

或者,不太優雅地創建另一個列並使用交叉表。

In [140]: df['ct'] = df.code.astype(str) + '_' + df.type.astype(str)

In [141]: df
Out[141]:
   index  code  type     ct
0    312    11    21  11_21
1    312    11    41  11_41
2    312    11    21  11_21
3    313    23    22  23_22
4    313    11    21  11_21

In [142]: pd.crosstab(df['index'], df['ct'])
Out[142]:
ct     11_21  11_41  23_22
index
312        2      1      0
313        1      0      1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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