所以标题有点令人困惑,但本质上,我有一个包含两列的数据框,一列用于字符(“c”),另一列用于字符的坐标(“loc”)。我想按 Y 坐标对数据框进行排序。到目前为止,我已经设法使用 sort_values() 函数按 X 坐标对数据框进行排序:
df = pd.DataFrame({"c":["i", "a"," d","m"], "loc":[[1, 2], [3, 3], [4, 2], [3,5]]})
df.sort_values(by=["loc"], inplace=True)
输出:
c loc
0 i [1, 2]
1 a [3, 3]
3 m [3, 5]
2 d [4, 2]
我的目标输出是:
c loc
0 i [1, 2]
2 d [4, 2]
1 a [3, 3]
3 m [3, 5]
循环遍历数据帧并反转 y 和 x 值不是一种选择,因为完整的数据帧将非常大。我确实认为这应该是可能的,因为 pd.df.sort_values() 的新版本有一个“键”输入(链接到 pd.df.sort_values() 文档),但我对“键”输入不够熟悉正确执行此操作。
使用key
参数sort_values
:
df.sort_values(by ='loc', key=lambda x: x.str[1])
输出:
c loc
0 i [1, 2]
2 d [4, 2]
1 a [3, 3]
3 m [3, 5]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句