![](/img/trans.png)
[英]How to create unique code based on combination of two columns in python data frame
[英]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
通過col2
和col1
,但后來需要swaplevel
(如果順序列col1
和col2
是很重要的)與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
第二種解決方案首先需要col2
和col1
列中的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.