Извлекайте названия столбцов и сортируйте их в Pandas - PullRequest
0 голосов
/ 28 мая 2018

У меня есть pandas dataframe, который выглядит как приведенный ниже:

A  |  B  | C   | D   |  E  |
1  |  2  | 3.5 | 2.3 | 4.0 |

Я хочу всегда извлекать любые столбцы C - E, которые больше 2,5, и сортировать их в порядке убывания их значений.

Для приведенного выше примера:

E,C is the output

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Один из способов - извлечь значения для нужных вам столбцов с помощью pd.DataFrame.columns.get_loc.Затем отфильтруйте и используйте pd.Series.index:

vals = df.iloc[0, df.columns.get_loc('C'):]  # or df.loc[0, 'C':]
res = vals[vals > 2.5].sort_values(ascending=False).index

print(res)

Index(['E', 'C'], dtype='object')
0 голосов
/ 28 мая 2018

transpose + sort_values

v = df.T.squeeze().loc['C':'E'].sort_values(ascending=False)
v.index[v.gt(2.5)].tolist()
['E', 'C']

stack + sort_values

v = (
   df.stack()
     .reset_index(level=0, drop=True)
     .loc['C':'E']
     .sort_values(ascending=False)
)
v.index[v.gt(2.5)].tolist()
['E', 'C']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...