Python Pandas, Boolean Indexing: как выбрать все строки со значением «True» - PullRequest
0 голосов
/ 24 января 2019

давайте предположим, что мне нужен "начальный pont" фильтра.Как я могу получить логический индекс всех значений в столбце, чтобы быть 'True'?

Минимальный пример: -> Очевидный.Если у меня есть df формы (2, 2), я бы хотел получить логический индекс (2,1) = True.Конечно, 2 строки являются переменными, а также количество столбцов.

import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)

теперь у меня есть условие типа «значение в col1 должно быть 1», поэтому я делаю:

boolean_index = df.loc[:,'col1']==1

, который возвращает

0     True
1    False
Name: col1, dtype: bool

Но я хочу НЕ УКАЗАТЬ ЛЮБОЕ СОСТОЯНИЕ (например, не указывать boolean_index = df.loc [:, 'col1'] == 1 ) и вернуть

0     True
1     True
Name: col1, dtype: bool

Я, наверное, я просто тупой, чтобы разобраться?Или никто не задавал этот вопрос?

1 Ответ

0 голосов
/ 24 января 2019

Не совсем понятно, что вы ищете, но чтобы получить столбец True, по которому вы можете фильтровать:

df = pd.DataFrame({'Col' : ['Something'] * 300})
df['FilterCol'] = df.Col.apply(lambda x : x == 'Something')

Тогда:

df[df['FilterCol']]

Возвращает все.Замените «Something» на «Nothing» (или что-нибудь еще, очевидно) в лямбда-функции, и она будет пустой.

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

(Правка - на основе рассматриваемого примера - добавьте:

df.apply(lambda x : True)

в конец кода, чтобы получить ответ, который вы ищете.)

(Правка 2- из нового минимального примера:

import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.apply(lambda x : True, axis=1)

Вывод:

0    True
1    True
dtype: bool

, который не содержит ни имени, ни типа dtype, как в вашем примере, но это насколько язнаю, как добраться.

(Окончательное редактирование (надеюсь :))

df.col1.apply(lambda x : True)

Выводит ответ, который, я думаю, вы ищете.)

...