为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 对重复的列值进行排序

Pandas 对重复的列值进行排序

波斯汪 2022-06-02 18:06:02
如何对 DataFrame 进行排序,以便将列的重复行值“添加”到它们首先“出现”的行中?例如,我原来的 DataFrame 是这样的:In [3]: dfOut[3]:     A  B0  r1  01  r3  32  r3  53  r1  34  r3  65  r4  26  r2  17  r1  7我想对它进行以下排序In [3]: dfOut[3]:     A  B0  r1  01  r1  32  r1  73  r3  34  r3  55  r3  66  r4  27  r2  7我已经尝试过df.groupby('A')了,但它没有给我想要的结果
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

你可以像这样使用 group by


df.groupby("A").apply(lambda x: x[["B"]].copy()).reset_index(level=0)

但是如果您不想对组进行某些操作,则简单排序将起作用


df.sort_values("A")

## or 

df.sort_values(["A", "B"])


查看完整回答
反对 回复 2022-06-02
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

您可以创建一个字典,将 A 列映射到它首次出现时的索引,然后使用它对 df 进行排序:


d = {}

c = 0

for i in df.itertuples():

    if i.A not in d:

        d.update({i.A: c})

        c += 1


df['m'] = df.A.map(d)

df = df.sort_values(by='m').drop('m', axis=1)


    A  B

0  r1  0

3  r1  3

7  r1  7

1  r3  3

2  r3  5

4  r3  6

5  r4  2

6  r2  1


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 349 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信