Изменить порядок столбцов на основе заданного шаблона c - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть фрейм данных, похожий на структуру ниже:

enter image description here

Я хотел бы просто переставить столбцы, чтобы получить следующий порядок (Нет Вычисление необходимо):

enter image description here

Для обеих последовательностей порядок должен быть Amount, Buy, Sell. Я знаю, что поля Amount всегда имеют цифры c, а поля Buy содержат только Buy, а Sell - только поля Sell. В таблице также может быть указана сумма Amount03, Buy03 и Sell03, где вам не нужно вносить какие-либо изменения (например, правильный заказ)! Чтобы воспроизвести проблему, я приложил образец фрейма данных ниже:

main = {'ID': [1,2,3],
        'Name1': ['Julius', 'Peter', 'Marcus'],
'Postcode': [58921, 69751, 60314],
'Buy01': ['Buy', 'Buy', ''],
'Sell01': ['', '', 'Sell'],
'Amount01': [1500, 1200, 3000],
'ELO': [15, 18, 15],
'Buy02': ['Buy', ' ', ''],
'Sell02': ['', 'Sell', 'Sell'],
'Amount02': [1600, 1100, 3620],
'Height': [178, 165, 174],
'Weight': [96, 85, 73],
        }
df = pd.DataFrame(main, columns = ['ID', 'Name1', 'Postcode', 'Buy01', 'Sell01', 'Amount01', 'ELO',  'Buy02', 'Sell02', 'Amount02', 'Height', 'Weight'])

Я ищу универсальное c решение. Любая помощь / предложение будет высоко ценится!

1 Ответ

0 голосов
/ 23 апреля 2020

Это не полное решение вашего вопроса, но может быть полезно, чтобы зажечь некоторые идеи.

В pandas вы можете получить столбцы кадра данных со следующими обозначениями:

df[['col1', 'col2']]

Исходя из этой идеи, вы можете изменить порядок отображения столбцов. Например, в вашем случае:

>>> df[['Amount01', 'Sell01', 'Buy01']]
   Amount01 Sell01 Buy01
0      1500          Buy
1      1200          Buy
2      3000   Sell   

Вы можете сделать что-то подобное, чтобы переупорядочить столбцы:

>>> columns = list(df.columns)
>>> df[sorted(columns)]
   Amount01  Amount02 Buy01 Buy02  ELO  Height  ID   Name1  Postcode Sell01 Sell02  Weight
0      1500      1600   Buy   Buy   15     178   1  Julius     58921                    96
1      1200      1100   Buy         18     165   2   Peter     69751          Sell      85
2      3000      3620               15     174   3  Marcus     60314   Sell   Sell      73

Больше объявлений c "упорядочение" может быть выполнено с помощью Пользовательский алгоритм сортировки. Там вы можете добавить логи c, которые вы описали, чтобы отсортировать массив столбцов, а затем получить отсортированные столбцы.

...