为一个模糊的标题道歉;希望我能更好地解释。我有一个pandasDataFrame df(按 排序c1):
c1 c2
A A
A D
A E
B C
B D
C E
C G
D C
D F
E A
E D
E F
F C
F E
F G
G A
G B
G D
G G
我想要排序的方式df是c1对单个值进行排序,然后收集该值的所有对应c2值,然后按这些值c1排序c1。换句话说,
c1 c2
A A
A D (*)
A E (**)
D (*) C (***)
D F (****)
E (**) A
E D
E F
C (***) E
C G (*****)
F (****) C
F E
F G
G (*****) A
G B (******)
G D
G G
B (******) C
B D
我使用 *s 作为指标。在这里,您可以看到它c1是按出现的顺序按元素排序的c2。
我首先尝试将两列排序在一起,
df = df.sort_values(by = ["c1", "c2"])
或在对它们进行不同排序后重新索引,
df.reindex(pd.DataFrame(np.sort(df.values,1)).sort_values([0,1]).index)
并且还尝试过压缩它们,
df['c1', 'c2'] = [list(x) for x in zip(*sorted(zip(df["c1"], df["c2"]), key=lambda pair: pair[0]))]
但似乎没有一种方法能提供我想要的东西。它们只是将外观相同的 DataFrame 传递给df最初的排序方式。对此自定义排序有何见解?