在忽略大小写的情况下按多列对数据框进行排序
Sort dataframe by multiple columns while ignoring case
我想像这样按多列对数据框进行排序:
df.sort_values( by=[ 'A', 'B', 'C', 'D', 'E' ], inplace=True )
但是我发现 python 首先对大写值进行排序,然后对小写值进行排序。
我试过这个:
df.sort_values( by=[ 'A', 'B', 'C', 'D', 'E' ], inplace=True, key=lambda x: x.str.lower() )
但是我得到这个错误:
TypeError: sort_values() got an unexpected keyword argument 'key'
如果可以的话,我会将所有列都变成小写,但我希望它们保持原样。
有什么提示吗?
如果检查文档 - DataFrame.sort_values
正确工作需要升级 pandas 更高,如 pandas 1.1.0
:
key - callable, optional
Apply the key function to the values before sorting. This is similar to the key argument in the builtin sorted() function, with the notable difference that this key function should be vectorized. It should expect a Series and return a Series with the same shape as the input. It will be applied to each column in by independently.
New in version 1.1.0.
示例:
df = pd.DataFrame({
'A':list('MmMJJj'),
'B':list('aYAbCc')
})
df.sort_values(by=[ 'A', 'B'], inplace=True, key=lambda x: x.str.lower())
print (df)
A B
3 J b
4 J C
5 j c
0 M a
2 M A
1 m Y
我想像这样按多列对数据框进行排序:
df.sort_values( by=[ 'A', 'B', 'C', 'D', 'E' ], inplace=True )
但是我发现 python 首先对大写值进行排序,然后对小写值进行排序。
我试过这个:
df.sort_values( by=[ 'A', 'B', 'C', 'D', 'E' ], inplace=True, key=lambda x: x.str.lower() )
但是我得到这个错误:
TypeError: sort_values() got an unexpected keyword argument 'key'
如果可以的话,我会将所有列都变成小写,但我希望它们保持原样。
有什么提示吗?
如果检查文档 - DataFrame.sort_values
正确工作需要升级 pandas 更高,如 pandas 1.1.0
:
key - callable, optional
Apply the key function to the values before sorting. This is similar to the key argument in the builtin sorted() function, with the notable difference that this key function should be vectorized. It should expect a Series and return a Series with the same shape as the input. It will be applied to each column in by independently.
New in version 1.1.0.
示例:
df = pd.DataFrame({
'A':list('MmMJJj'),
'B':list('aYAbCc')
})
df.sort_values(by=[ 'A', 'B'], inplace=True, key=lambda x: x.str.lower())
print (df)
A B
3 J b
4 J C
5 j c
0 M a
2 M A
1 m Y