簡體   English   中英

如何在python數據框中獲取列的唯一組合並按它們排序?

[英]how to get the unique combination of columns and sort by them in python data frame?

如何在python數據框中獲取列的唯一組合並按它們排序? 我知道我可以使用 df.groupby(['col1','col2']).size() 來獲得獨特的組合。 但是,我也希望按 col2 的升序排列結果順序,然后按 col1 升序排列。 例如,如果我的數據框是這樣的:

  col1  col2
0    A     1
1    B     3
2    C     2
3    D     1
4    A     1
5    F     2

我希望最終輸出如下所示:

  col1  col2 
0    A     1 
1    D     1 
2    C     2
3    F     2
4    B     3 

使用groupby通過col2col1 ,但后來需要swaplevel (如果順序列col1col2是很重要的)與reset_index -在溶液中使用默認排序groupby

df1 = df.groupby(['col2','col1']).size().swaplevel(0,1).reset_index(name='count')
print (df1)
  col1  col2  count
0    A     1      2
1    D     1      1
2    C     2      1
3    F     2      1
4    B     3      1

第二種解決方案首先需要col2col1列中的sort_values ,然后將參數sort=False添加到groupby ,因為默認情況下sort=True

df = df.sort_values(['col2','col1'])
print (df)
  col1  col2
0    A     1
4    A     1
3    D     1
2    C     2
5    F     2
1    B     3

print (df.groupby(['col1','col2'], sort=False).size())
col1  col2
A     1       2
D     1       1
C     2       1
F     2       1
B     3       1
dtype: int64

另一個解決方案是先groupby然后sort_values

df1 = df.groupby(['col1','col2']).size().reset_index(name='count')
print (df1)
  col1  col2  count
0    A     1      2
1    B     3      1
2    C     2      1
3    D     1      1
4    F     2      1

df1 = df1.sort_values(['col2','col1'])
print (df1)
  col1  col2  count
0    A     1      2
3    D     1      1
2    C     2      1
4    F     2      1
1    B     3      1

暫無
暫無

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

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