要按照长度和字母数字顺序对pandas数据帧的列进行排序,可以按照以下步骤操作:
import pandas as pd
import re
data = {'col1': ['a', 'bb', 'ccc', 'dddd'],
'col2': ['1', '22', '333', '4444'],
'col3': ['A1', 'B2', 'C3', 'D4']}
df = pd.DataFrame(data)
def get_len_alnum(s):
length = len(s)
alnum = re.sub('\W+', '', s)
return (length, alnum)
apply
函数将该函数应用于数据帧的每一列:df = df.apply(lambda x: pd.Series(get_len_alnum(x)))
df = df.sort_values(by=[0, 1], axis=1)
完整的示例代码如下:
import pandas as pd
import re
data = {'col1': ['a', 'bb', 'ccc', 'dddd'],
'col2': ['1', '22', '333', '4444'],
'col3': ['A1', 'B2', 'C3', 'D4']}
df = pd.DataFrame(data)
def get_len_alnum(s):
length = len(s)
alnum = re.sub('\W+', '', s)
return (length, alnum)
df = df.apply(lambda x: pd.Series(get_len_alnum(x)))
df = df.sort_values(by=[0, 1], axis=1)
这将按照列中字符串的长度和字母数字顺序对数据帧的列进行排序。
下一篇:按长度将列值拆分为单独的列