【问题标题】:Python - reorder pandas Dataframe rows based on column valuesPython - 根据列值重新排序熊猫数据框行
【发布时间】:2022-02-16 03:16:35
【问题描述】:

我有一个包含 2 列的数据框: id , antecedent_id 我想要一个代码来使用 antecedent_id 以正确的顺序重新排序数据帧。 第一个 id 是 antecedent_id 为空的那个

数据框示例:

id antecedent_id
id1 id2
id4 id7
id6 id3
id7
id3 id4
id2 id6
id5 id1

重新排序的数据框应该是这样的:

id antecedent_id
id7
id4 id7
id3 id4
id6 id3
id2 id6
id1 id2
id5 id1

我想找到最快的代码来做到这一点,因为我有大量的行

非常感谢您的帮助!

【问题讨论】:

  • 欢迎来到 StackOverflow!为了将来参考,请提供用于构建数据框的代码,以便人们更容易重现您的问题陈述并回答您的问题

标签: python dataframe sorting


【解决方案1】:

您基本上希望按列中的值对数据框进行排序:

import pandas as pd
df = pd.DataFrame({
    "id": ["id1", "id4", "id6", "id7", "id3", "id2", "id5"],
    "antecedent_id": ["id2", "id7", "id3", "", "id4", "id6", "id1"]
})
sorted_df = df.sort_values("antecedent_id", ascending=False)
print(sorted_df)

此代码块返回一个排序后的数据框,如下所示:

    id antecedent_id
1  id4           id7
5  id2           id6
4  id3           id4
2  id6           id3
0  id1           id2
6  id5           id1
3  id7              

【讨论】:

  • 由于reorder the dataframe in the right order using antecedent_id 这个短语,我最初得出了相同的结论,但这很可能不是 OP 想要的。这里的输出与其预期的输出不匹配。 OP应该说的是'我有一个有向图(实际上是一条路径),其中除根之外的每个节点都有一个唯一的前件(即祖先)。找到这个根,并对数据帧行进行拓扑排序
猜你喜欢
  • 2023-03-16
  • 2012-06-19
  • 2019-03-20
  • 2022-06-13
相关资源
最近更新 更多