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

标签 python pandas dataframe

数据框是

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 !

最佳答案

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

关于python - 如何使用列中每个唯一元素的第一次出现对数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67070881/

相关文章:

python - Pandas:使用 set_index() 将列设置为索引会创建一个子索引。为什么会发生这种情况以及如何消除它?

python - 将应用程序或脚本转换为 shell 命令

python - 在 Dataframe 中查找重复项并返回 1 和 0

python - 将 pandas 数据框转换为嵌套字典

python - 如何将整数类型数组(带有一些NaN)转换为字符串类型数组

r - 如何根据 R 中最近位置的坐标对数据框中的行进行子集化

java - 在 Jython 2.5 中同时执行多个函数

python - 在 Python 中使用 SSL 通过电子邮件发送 Excel 工作表

python-3.x - 带标签的 Python Dataframe 单行

python - 如何将 bool 列从宽表 reshape 为长表