Проверьте значения, соответствующие pd.idxmin (), и отфильтруйте с некоторыми условиями - PullRequest
0 голосов
/ 06 сентября 2018

Извините, я не смог найти для него подходящего названия. Не стесняйтесь менять его.

Это мой примерный фрейм данных

ID,Val1,Val2,Val3
1,10,9,11
2,14,15,16
3,17,18,1
1,22,25,3

Я хочу проверить значение строки за строкой для каждого столбца, кроме идентификатора, и если существует минимальное число, превышающее 4, я бы хотел удалить эти столбцы. Здесь, в этом случае, идентификаторы 1 (вверху) и 2 имеют минимальное число больше 4. Поэтому я хочу удалить обе эти строки из кадра данных.

Я не могу проверить использование имен столбцов, потому что в моем реальном фрейме данных у меня будет 100 столбцов, и я даже не знаю их имени.

Чтобы найти минимальное значение для каждой строки, я использую idxmin.

df1 = df.set_index('ID').idxmin(axis=1).reset_index(name= 'New')

У меня есть вывод этого

ID   New
 1  Val2
 2  Val1
 3  Val3
 1  Val3

У меня такой вопрос, есть ли способ, которым я могу отслеживать значение, соответствующее этим новым выходным данным, чтобы я мог просто применить (df1['New] > some conditions) и удалить эти строки в зависимости от условий.

например, в этом случае конечный результат будет (после удаления этих строк минимальное число больше 4)

ID New
 3  Val3
 1  Val3

Или есть другой способ проще?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете сделать min с первым кадром данных

df1.loc[df.iloc[:,1:].min(1)<4]
Out[270]: 
   ID   New
2   3  Val3
3   1  Val3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...