按字母和数字顺序对 Dataframe 列进行排序
Sorting Dataframe Columns By Alphabetical & Numerical Order
我想通过按字母顺序和数字顺序对数据框的列进行重新索引。
在我的数据框 df 中,我的列被命名为:
Round 1 Position, Round 2 Position, Round 1 Score, Round 2 Score, Round 1 Price, Round 2 Price, ..., Round 10 Position, Round 10 Score, Round 10 Price
我希望它们的顺序如下:
Round 1 Position, Round 1 Price, Round 1 Score, Round 2 Position, Round 2 Price, Round 2 Score, Round 3 Position, Round 3 Price, Round 3 Score, ..., Round 10 Position, Round 10 Price, Round 10 Score
我试过以下方法:
df.reindex(sorted(df.columns, key=lambda x: float(x[1:])), axis=1)
但运气不好,因为列名是一个字符串。
感谢您花时间阅读我的问题并帮助我。非常感谢!
按照自然顺序对列名称进行排序后,您可以使用 []
索引对列重新排序。
import pandas as pd
import natsort
df = pd.DataFrame({'A2': [1, 2, 3],
'B1': [4, 5, 6],
'A1': [7, 8, 9]})
# sort the column names
col_names = df.columns
sorted_col_names = natsort.natsorted(col_names)
# re-order the columns
df = df[sorted_col_names]
print(df)
输出:
A1 A2 B1
0 7 1 4
1 8 2 5
2 9 3 6
How to sort alpha numeric set in python 的答案中有多个选项可用于对字母数字值进行排序。我测试了 natsort
库,它适用于您的输入。
columns = ['Round 1 Position', 'Round 2 Position', 'Round 1 Score', 'Round 2 Score', 'Round 1 Price',
'Round 2 Price', 'Round 10 Position', 'Round 10 Score', 'Round 10 Price']
columns_s = natsort.natsorted(columns)
print(columns_s)
输出:
['Round 1 Position', 'Round 1 Price', 'Round 1 Score', 'Round 2 Position', 'Round 2 Price', 'Round 2 Score', 'Round 10 Position', 'Round 10 Price', 'Round 10 Score']
我想通过按字母顺序和数字顺序对数据框的列进行重新索引。
在我的数据框 df 中,我的列被命名为:
Round 1 Position, Round 2 Position, Round 1 Score, Round 2 Score, Round 1 Price, Round 2 Price, ..., Round 10 Position, Round 10 Score, Round 10 Price
我希望它们的顺序如下:
Round 1 Position, Round 1 Price, Round 1 Score, Round 2 Position, Round 2 Price, Round 2 Score, Round 3 Position, Round 3 Price, Round 3 Score, ..., Round 10 Position, Round 10 Price, Round 10 Score
我试过以下方法:
df.reindex(sorted(df.columns, key=lambda x: float(x[1:])), axis=1)
但运气不好,因为列名是一个字符串。
感谢您花时间阅读我的问题并帮助我。非常感谢!
按照自然顺序对列名称进行排序后,您可以使用 []
索引对列重新排序。
import pandas as pd
import natsort
df = pd.DataFrame({'A2': [1, 2, 3],
'B1': [4, 5, 6],
'A1': [7, 8, 9]})
# sort the column names
col_names = df.columns
sorted_col_names = natsort.natsorted(col_names)
# re-order the columns
df = df[sorted_col_names]
print(df)
输出:
A1 A2 B1
0 7 1 4
1 8 2 5
2 9 3 6
How to sort alpha numeric set in python 的答案中有多个选项可用于对字母数字值进行排序。我测试了 natsort
库,它适用于您的输入。
columns = ['Round 1 Position', 'Round 2 Position', 'Round 1 Score', 'Round 2 Score', 'Round 1 Price',
'Round 2 Price', 'Round 10 Position', 'Round 10 Score', 'Round 10 Price']
columns_s = natsort.natsorted(columns)
print(columns_s)
输出:
['Round 1 Position', 'Round 1 Price', 'Round 1 Score', 'Round 2 Position', 'Round 2 Price', 'Round 2 Score', 'Round 10 Position', 'Round 10 Price', 'Round 10 Score']