在 Python 中对具有不规则列信息的 table 进行排序

Sort a table with irregular column info in Python

我有一个乱七八糟的 table,如下所示,table 中的数据有整数和 word/character。 我想将 table 从 Info 5 排序为 Info 1.

Fruit Info 1 Info 2 Info 3 Info 4 Info 5
Apple q z 2
Grape w 4
Guava e 7 u
Kiwi r n s m

希望得到如下结果table。

Fruit Info 1 Info 2 Info 3 Info 4 Info 5
Kiwi r n s m
Guava e 7 u
Apple q z 2
Grape w 4

我曾尝试使用 str.contains,但它无法检测到整数。

i = ['Fruit', 'Info 1', 'Info 2', 'Info 3', 'Info 4', 'Info 5',] 

data[data[i].str.contains('', na=False)

我的解决方案是使用旧 5 列的数字映射创建新的 5 列。这样更容易排序。关键函数是map,还有其他等价物如replace

# Step 1/3: create a dictionary to convert alphabet & 0-9 to new number value only:
convert_dict = {'a':1,
                'b':2,
                'c':3} # You can start filling till z. Then for 0-9 accumulate 

# Step 2/3: iterate over 5 columns, create 5 `new {i}` columns that can be used for sort:
for i in range(1,6):
    df[f'new {i}'] = df[f'Info {i}'].map(convert_dict)

    
# Step 3/3: sort
df.sort_values(by=[f'new {i}' for i in range(1,6)], ignore_index=True, inplace=True)
df.drop(columns=[f'new {i}' for i in range(1,6)], inplace=True) # remove if you no longer need