对字符串类型的列反向排序_值()

2024-09-30 16:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这个线程here使用sort_values按列对数据帧进行排序

这个线程here讨论了如何使用切片简洁地反转字符串

我的问题:我想使用值为字符串的列对数据帧进行排序,如下所示:

df = pd.DataFrame(['a1a', 'a3d', 'a2b',  'a4c'], columns=['col'])

sort_value()将字符串从左向右排序。在这种情况下,输出为:

df_sort = df.sort_values(['col'])

   col
0  a1a
1  a2b
2  a3d
3  a4c

如果我想从右到左对字符排序,那么将sort_values()和反向字符串语法结合起来的最佳方法是什么? 预期输出(注意项目索引2和3的切换顺序)

   col
0  a1a
1  a2b
2  a4c
3  a3d

更新:来自@Anurag Dabas的预期输出

df = pd.DataFrame(['a1a', 'a2b', 'a3d', 'a4c','b9a','c8b'], columns=['col'])

df_sort = 


0  a1a
1  b9a
2  a2b
3  c8b
4  a4c
5  a3d

Tags: 数据字符串dataframedfhere排序colsort
2条回答

尝试通过sort_values()中的key参数:

df_sort =df.sort_values(['col'],key=lambda x:x.str[-1],ignore_index=True)

df_sort的输出:

    col
0   a1a
1   b9a
2   a2b
3   c8b
4   a4c
5   a3d

所以你必须基本上反转列,然后对它进行排序

您可以使用pd.DataFrame.applypd.DataFrame.sort_values执行此操作:

df.loc[df['col'].apply(lambda x: x[::-1]).sort_values().index]

   col
0  a1a
1  a2b
3  a4c
2  a3d

或者只使用pd.DataFrame.sort_values中的key参数:

df.sort_values(['col'], key=lambda x: x.str[::-1])

   col
0  a1a
1  a2b
3  a4c
2  a3d

相关问题 更多 >