按多列文本和数字排序数据框,同时忽略大小写



如何对包含文本和数字列的Pandas数据框进行排序,同时忽略大小写?

df = pd.DataFrame({
'A':list('aabbCC'),
'B':[2,1,2,1,10,1]
})

基于此答案按多列排序数据框,同时忽略大小写

df.sort_values(by=[ 'A', 'B'], inplace=True, key=lambda x: x.str.lower())

我得到一个错误

builtins.AttributeError: Can only use .str accessor with string values!

如何修改键功能?

对于非数字列使用小写的if-else语句:

f = lambda x: x if np.issubdtype(x.dtype, np.number) else x.str.lower()
df.sort_values(by=[ 'A', 'B'], inplace=True, key=f)

或:

df = df.loc[df.assign(A=df['A'].str.lower()).sort_values(by=[ 'A', 'B']).index]

相关内容

  • 没有找到相关文章

最新更新