如何在忽略大小寫的情況下對帶有文本和數字列的 Pandas 資料框進行排序?
df = pd.DataFrame({
'A':list('aabbCC'),
'B':[2,1,2,1,10,1]
})
基于this answer按多列對資料框進行排序,同時忽略大小寫
df.sort_values(by=[ 'A', 'B'], inplace=True, key=lambda x: x.str.lower())
我收到一個錯誤
builtins.AttributeError: Can only use .str accessor with string values!
如何修改按鍵功能?
uj5u.com熱心網友回復:
對非數字列使用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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484960.html
下一篇:一個月的粒度資料中各個標簽的總和
