gpt4 book ai didi

python - 自然排序 Pandas 中的数据框列

转载 作者:行者123 更新时间:2023-12-03 22:57:39 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Naturally sorting Pandas DataFrame

(3 个回答)


3年前关闭。




我想对 Pandas 中的列应用自然排序顺序 DataFrame .我要排序的列可能包含重复项。我看过相关的Naturally sorting Pandas DataFrame问题,但它是关于对索引进行排序,而不是任何列。

例子

df = pd.DataFrame({'a': ['a22', 'a20', 'a1', 'a10', 'a3', 'a1', 'a11'], 'b': ['b5', 'b2', 'b11', 'b22', 'b4', 'b1', 'b12']})

a b
0 a22 b5
1 a20 b2
2 a1 b11
3 a10 b22
4 a3 b4
5 a1 b1
6 a11 b12

自然排序列 a :
     a    b
0 a1 b11
1 a1 b1
2 a3 b4
3 a10 b22
4 a11 b12
5 a20 b2
6 a22 b5

自然排序列 b :
     a    b
0 a1 b1
1 a20 b2
2 a3 b4
3 a22 b5
4 a1 b11
5 a11 b12
6 a10 b22

最佳答案

您可以将值转换为有序 categoricalnatsorted 分类的类别然后使用 sort_values :

import natsort as ns

df['a'] = pd.Categorical(df['a'], ordered=True, categories= ns.natsorted(df['a'].unique()))
df = df.sort_values('a')
print (df)
a b
5 a1 b1
2 a1 b11
4 a3 b4
3 a10 b22
6 a11 b12
1 a20 b2
0 a22 b5
df['b'] = pd.Categorical(df['b'], ordered=True, categories= ns.natsorted(df['b'].unique()))

df = df.sort_values('b')
print (df)
a b
5 a1 b1
1 a20 b2
4 a3 b4
0 a22 b5
2 a1 b11
6 a11 b12
3 a10 b22

关于python - 自然排序 Pandas 中的数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52366558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com