python - 按期限顺序对 pandas 数据框进行排序

标签 python pandas dataframe

数据框的第一列包含以下内容:

{10Y, 12Y, 15Y, 1M, 1W, 1Y, 20Y, 25Y, 2M, 2W, 2Y, 30Y, 3M, 3W, 3Y, 4Y, 5Y, 6M, 7Y, 9M}

我想按照主旨的“真实”顺序排列数据框的行:

{1W, 2W, 3W, 1M, 2M, 3M, 6M, 9M, 1Y, 2Y, 3Y, 4Y, 5Y, 7Y, 10Y, 12Y, 15Y, 20Y, 25Y, 30Y}

我应该如何定义这个顺序,然后将其应用到数据框?

提前致谢

最佳答案

创建映射字典并创建自定义排序键:

mapping = {'W': 1, 'M': 10, 'Y': 100}
key = lambda x: x.str[:-1].astype(int) * x.str[-1].map(mapping)
out = df.sort_values('Tenors', key=key)

输出:

>>> out
   Tenors
4      1W
9      2W
13     3W
3      1M
8      2M
12     3M
17     6M
19     9M
5      1Y
10     2Y
14     3Y
15     4Y
16     5Y
18     7Y
0     10Y
1     12Y
2     15Y
6     20Y
7     25Y
11    30Y

输入:

>>> df
   Tenors
0     10Y
1     12Y
2     15Y
3      1M
4      1W
5      1Y
6     20Y
7     25Y
8      2M
9      2W
10     2Y
11    30Y
12     3M
13     3W
14     3Y
15     4Y
16     5Y
17     6M
18     7Y
19     9M

关于python - 按期限顺序对 pandas 数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75059983/

相关文章:

python - Pandas 的时间事件研究

python - 带有一列图像的 QTableView

python - 将包含 UTF-8 和 Null 的 DataFrame 转换为字符串而不丢失数据

滚动总结以另一个数据帧上的多个变量为条件

python - 如何从 Pandas DataFrame 的列内列表中删除值

python - 在字典中查找对象属性的最大值

python - 如何将一个数据框列拆分为多列

python - 在两列上使用 pandas groupby 如何派生新列

python - Pandas 滚动 OLS 被弃用

python - 在 pandas DataFrame 多索引函数之外解压列表