我正在寻找一种对 Pandas DataFrame 进行排序的方法。 pd.DataFrame.sort_values
不接受键函数。我可以将其转换为列表,并应用一个键到 sorted
函数,但那会很慢。另一种方式似乎与分类索引有关。我没有固定的行数,因此我不知道分类索引是否适用。
下面是一个示例数据:
输入 DataFrame:
clouds fluff
0 {[} 1
1 >>> 2
2 {1 3
3 123 4
4 AAsda 5
5 aad 6
输出数据框:
clouds fluff
0 >>> 2
1 {[} 1
2 {1 3
3 123 4
4 aad 6
5 AAsda 5
排序规则(优先级):
首先是特殊字符(按ascii顺序排序)
其次是数字
接下来是小写字母(按字典顺序)
最后是大写字母(按字典顺序)
在纯Python中,我会这样做:
from functools import cmp_to_key
def ks(a, b):
# "Not exactly this but similar"
if a.isupper():
return -1
else:
return 1
案例
sorted(['aa', 'AA', 'dd', 'DD'], key=cmp_to_key(ks))
抱歉,您需要提供要翻译的具体文本。
['DD', 'AA', 'aa', 'dd']
你会如何使用Pandas进行操作?
pd.DataFrame
。 - Vasantha Ganesh