所以标题有点令人困惑,但本质上,我有一个带有两列的Dataframe,一列用于字符("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]