Сортировать столбцы в кадре на основе суффикса с плавающей точкой в ​​заголовках - PullRequest
1 голос
/ 12 июня 2019

У меня есть следующий фрейм данных:

data = [{'Po_+0.00': 1, 'Po_+0.25': 1.5, 'Po_+0.50': 2,'Po_-0.25': 1.3, 'Po_-0.50': 1.6}]
df = pd.DataFrame(data, index =[1])

enter image description here Моя цель - отсортировать столбцы следующим образом:

enter image description here

Я пробовал разные способы, но так и не смог получить правильный результат.

Есть идеи?

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

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Используйте sorted с параметром key и лямбда-функцией для преобразования следующих 3 значений в числа с плавающей запятой:

df = df[sorted(df.columns, key=lambda x: float(x[3:]))]
print (df)
   Po_-0.50  Po_-0.25  Po_+0.00  Po_+0.25  Po_+0.50
1       1.6       1.3         1       1.5         2
1 голос
/ 12 июня 2019

Используйте argsort взяв числовую часть имен столбцов:

df = df[df.columns[df.columns.str[3:].astype(float).argsort()]]
#Alternative
#df = df.iloc[:, df.columns.str[3:].astype(float).argsort()]

print(df)
   Po_-0.50  Po_-0.25  Po_+0.00  Po_+0.25  Po_+0.50
1       1.6       1.3         1       1.5         2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...