Как исправить порядок столбцов в фрейме данных pandas?

#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: []