如何对 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"])
紫衣仙女
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
添加回答
举报
0/150
提交
取消