Как изменить порядок DataFrame на основе столбца другого DataFrame - PullRequest
0 голосов
/ 08 июля 2020

У меня есть два Dataframes с одним общим столбцом с одинаковыми значениями, но в другом порядке

df1

    shared_column    column1
0   Z59FTQD X 0 X 243   0
1   0JP29SK X 0 X 243   0
2   0JP29SK X 1 X 243   0
3   0JP29SK X 2 X 243   0
4   0JP29SK X 3 X 243   0

df2
    shared_column    column2
0   ICE2DJP X 0 X 4     ICE2DJP
1   ICE2DJP X 0 X 13    ICE2DJP
2   ICE2DJP X 0 X 20    ICE2DJP
3   ICE2DJP X 0 X 23    ICE2DJP
4   ICE2DJP X 0 X 28    ICE2DJP

'shared_column' в обоих наборах данных имеет одинаковое количество строк и значений, но находится в другой порядок.

Как я могу изменить порядок столбцов фрейма данных 'df1' в соответствии с порядком 'shared_column' в 'df2'?

Заранее спасибо!

1 Ответ

0 голосов
/ 08 июля 2020

Вы можете добавить новый столбец в df1, который в данном примере называется sort_col. Тогда вы можете просто использовать .sort_values ​​(). При необходимости вы можете установить значение True по возрастанию. Вы также можете использовать reset_index () после сортировки.

df1 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column1'])

df2 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column2'])

df1['sort_col'] = df2['shared_column']

df1.sort_values(by='sort_col', inplace=True, ascending=False)

print(df1)

    idx shared_column   column1 sort_col
0   0   Z59FTQD X 0 X 243   0   ICE2DJP X 0 X 4
4   4   0JP29SK X 3 X 243   0   ICE2DJP X 0 X 28
3   3   0JP29SK X 2 X 243   0   ICE2DJP X 0 X 23
2   2   0JP29SK X 1 X 243   0   ICE2DJP X 0 X 20
1   1   0JP29SK X 0 X 243   0   ICE2DJP X 0 X 13
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...