2016-05-13 3 views
2

Я предполагаю, что это легкое исправление, и я не уверен, что мне не хватает. У меня есть кадр данных, как например:Удалите строки, содержащие «False» в столбце кадра данных pandas.

  index    c1  c2   c3 
2015-03-07 01:27:05  False False  True 
2015-03-07 01:27:10  False False  True 
2015-03-07 01:27:15  False False  False 
2015-03-07 01:27:20  False False  True 
2015-03-07 01:27:25  False False  False 
2015-03-07 01:27:30  False False  True 

Я хочу, чтобы удалить все строки, которые содержат False в c3. c3 - dtype=bool. Я постоянно сталкиваюсь с проблемами, так как это логическое значение, а не строка/int/и т. Д., Я не занимался этим раньше.

Спасибо за помощь!

+0

могли бы вы предоставить код? –

+0

Как вы обрабатываете файл? – aBiologist

ответ

5

Ну название на вопрос и сам вопрос прямо противоположно, но:

df = df[df['c3'] == True] # df will have only rows with True in c3 
13

панда занимается булевыми в очень аккуратном, простом способе:

df = df[df.c3] 

Когда вы фильтровальная dataframes с использованием df[...], вы часто пишете некоторую функцию, которая возвращает логическое значение (например, df.x > 2). Но в этом случае, поскольку столбец уже является логическим, вы можете просто положить df.c3 самостоятельно, и вы получите все строки True.

Если вы хотите получить обратное (в качестве исходного названия на ваш вопрос подразумевается), вы можете использовать df[~df.c3], где ~ инвертирует логические значения.

1

Решение

df.drop(df[df['c3'] == False].index, inplace=True) 

Это явно падает строки, в которых 'c3' является False, а не просто держать строки, которые оценивают в True

Смежные вопросы