按多列文本和数字对数据框进行排序,同时忽略大小写
Sort dataframe by multiple columns text and numeric while ignoring case
如何在忽略大小写的情况下对包含文本和数字列的 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]
如何在忽略大小写的情况下对包含文本和数字列的 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]