#python #python-3.x #pandas #dataframe
Вопрос:
Привет, у меня есть фрейм данных, в котором я должен исправить порядок столбцов. У меня есть список, в котором определен префикс имени столбца. У меня есть исправление в соответствии с этим списком.
Пример:
Столбцы df :-
nOffered_count, nOffered_sum, nTransferred_count, nTransferred_sum, tacd_count, tacd_sum, tacw_count, tacw_sum, tHeld_count, tHeld_sum
У меня есть список —
list = ['nOffered', 'tacw', 'tacd', 'nTransferred', 'tHeld']
В результате я хочу, чтобы в кадре данных был следующий порядок:
nOffered_count, nOffered_sum, tacw_count, tacw_sum, tacd_count, tacd_sum, nTransferred_count, nTransferred_sum, , tHeld_count, tHeld_sum
Ответ №1:
Создайте словарь для упорядочения в перечислении, а затем сортировки значений, предварительно _
сопоставив этот словарь:
L = ['nOffered', 'tacw', 'tacd', 'nTransferred', 'tHeld'] d = {v: k for k, v in dict(enumerate(L)).items()} cols = sorted(df.columns, key = lambda x: d.get(x.split('_')[0], '')) print(cols) ['nOffered_count', 'nOffered_sum', 'tacw_count', 'tacw_sum', 'tacd_count', 'tacd_sum', 'nTransferred_count', 'nTransferred_sum', 'tHeld_count', 'tHeld_sum']
Последнее изменение порядка в DataFrame
:
df = df[cols]
Еще одна идея:
df = df.sort_index(key = lambda x: x.str.split('_').str[0].map(d).fillna(''), axis=1) print(df) Empty DataFrame Columns: [nOffered_count, nOffered_sum, tacw_count, tacw_sum, tacd_count, tacd_sum, nTransferred_count, nTransferred_sum, tHeld_count, tHeld_sum] Index: []