如何对DataFrame进行排序,以便将列的重复行值“添加”到它们首先“出现”的行? 例如,我原始的DataFrame如下所示:
In [3]: df
Out[3]:
A B
0 r1 0
1 r3 3
2 r3 5
3 r1 3
4 r3 6
5 r4 2
6 r2 1
7 r1 7
我想对它进行以下排序
In [3]: df
Out[3]:
A B
0 r1 0
1 r1 3
2 r1 7
3 r3 3
4 r3 5
5 r3 6
6 r4 2
7 r2 7
我已经尝试过df.groupby('A')
,但是并没有给我想要的结果
答案 0 :(得分:0)
您可以创建一个字典,将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
答案 1 :(得分:0)
您可以像这样使用分组方式
df.groupby("A").apply(lambda x: x[["B"]].copy()).reset_index(level=0)
但如果您不想对组进行某些操作,则可以进行简单排序
df.sort_values("A")
## or
df.sort_values(["A", "B"])