数据框是
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
所以他们在一起等等。我尝试使用
groupby
与其 sort
是假的,因为它看起来很自然但是..df.groupby("fehmi", sort=False)
我想它们几乎是我需要的形式,但它是一个“groupby 对象”,无法获得我需要的形式,但我尝试这样做以按原样获取组df.groupby("fehmi", sort=False).apply(lambda s: s)
但它返回了原始 df !
最佳答案
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
关于python - 如何使用列中每个唯一元素的第一次出现对数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67070881/