#python #arrays #pandas #list #numpy
Вопрос:
Я хотел бы получить индексы столбцов, учитывая, что они удовлетворяют определенному условию.
Например, я хотел бы получить индексы всех столбцов, содержащих 0. В этом случае это будет [0,1] —> (столбец A и столбец B).
df = {'A': [0,1,2,3,4,5],
'B': [3,4,0,5,6,5],
'C': [1,2,3,4,5,6],
'D': [7,8,9,8,7,6]}
df = pd.DataFrame(df)
Спасибо!
Ответ №1:
Используйте np.где:
index_array = np.where(df.eq(0).any())[0] # prints array([0, 1])
index_array = np.where(~df.eq(0).any())[0] # prints array([2, 3])
В случае, если вам нужны имена столбцов:
col_list = df.columns[df.eq(0).any()] # prints Index(['A', 'B'], dtype='object')
Комментарии:
1. Большое спасибо! Теперь я попытался вернуть все столбцы, которые не содержат «0», со следующим: index_array = set(np.where(df1 != 0)[1]), но он вернулся {0, 1, 2, 3, 4}. Не могли бы вы, пожалуйста, поправить меня в этом вопросе?
2. @student214 использовать:
np.where(~df.eq(0).any())
Ответ №2:
Это должно вам помочь.
(df == 0).any(axis=1)
op:
0 True
1 False
2 True
3 False
4 False
5 False
dtype: bool