如何使用列中每个唯一元素的第一次出现对数据框进行排序?

数据框是

df = pd.DataFrame({"necmi": [0, 3, 14, 15, 2, 71, 8, 2, -1],
                   "fehmi": ["trial", "error", "manifest", "trial", "no", "only", "error", "no", "no"]})

这是

   necmi     fehmi
0      0     trial
1      3     error
2     14  manifest
3     15     trial
4      2        no
5     71      only
6      8     error
7      2        no
8     -1        no

所以我想fehmi根据条目的第一次出现对这个 df 进行排序,然后将它们组合在一起。想要的是

   necmi     fehmi
0      0     trial
1     15     trial
2      3     error
3      8     error
4     14  manifest
5      2        no
6      2        no
7     -1        no
8     71      only

因为我们trial首先在 df 中看到,所以我们将其条目收集在一起。然后我们看到error他们在一起等等。

我尝试使用groupbysort是假的,因为它看起来很自然但是..

df.groupby("fehmi", sort=False)

我想它们几乎是我需要的形式,但它是一个“groupby 对象”,无法获得我需要的形式,但我尝试这样做以按原样获取组

df.groupby("fehmi", sort=False).apply(lambda s: s)

但它返回了原始 df !

回答

factorize + argsort

df.iloc[np.argsort(df['fehmi'].factorize()[0])]

   necmi     fehmi
0      0     trial
3     15     trial
1      3     error
6      8     error
2     14  manifest
4      2        no
7      2        no
8     -1        no
5     71      only


以上是如何使用列中每个唯一元素的第一次出现对数据框进行排序?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>