Pandas 对重复的列值进行排序

如何对 DataFrame 进行排序,以便将列的重复行值“添加”到它们首先“出现”的行中?例如,我原来的 DataFrame 是这样的:


In [3]: df

Out[3]: 

    A  B

0  r1  0

1  r3  3

2  r3  5

3  r1  3

4  r3  6

5  r4  2

6  r2  1

7  r1  7

我想对它进行以下排序


In [3]: df

Out[3]: 

    A  B

0  r1  0

1  r1  3

2  r1  7

3  r3  3

4  r3  5

5  r3  6

6  r4  2

7  r2  7

我已经尝试过df.groupby('A')了,但它没有给我想要的结果


波斯汪
浏览 350回答 2
2回答

明月笑刀无情

你可以像这样使用 group bydf.groupby("A").apply(lambda x: x[["B"]].copy()).reset_index(level=0)但是如果您不想对组进行某些操作,则简单排序将起作用df.sort_values("A")## or df.sort_values(["A", "B"])

紫衣仙女

您可以创建一个字典,将 A 列映射到它首次出现时的索引,然后使用它对 df 进行排序:d = {}c = 0for i in df.itertuples():    if i.A not in d:        d.update({i.A: c})        c += 1df['m'] = df.A.map(d)df = df.sort_values(by='m').drop('m', axis=1)    A  B0  r1  03  r1  37  r1  71  r3  32  r3  54  r3  65  r4  26  r2  1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python