Панда Сортировка Дубликат столбца Значения - PullRequest
0 голосов
/ 21 сентября 2019

Как я могу отсортировать 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'), но он не дал мне желаемых результатов

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

вы можете использовать группу следующим образом

df.groupby("A").apply(lambda x: x[["B"]].copy()).reset_index(level=0)

, но простая сортировка будет работать, если вы не хотите выполнять какие-либо операции с группой

df.sort_values("A")
## or 
df.sort_values(["A", "B"])
0 голосов
/ 21 сентября 2019

Вы можете создать словарь, который сопоставляет столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...