如何根据列表的第二个元素对Python DataFrame进行排序



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

相关内容

  • 没有找到相关文章

最新更新