Выбор строк, в которых столбец не равен нулю и равен (строковому) значению - PullRequest
0 голосов
/ 27 июня 2018

Так что в основном я хочу выбрать все строки, в которых Col A равно строке 'hey'. Моя проблема в том, что Col A может содержать нуль / нано, поэтому я получаю

TypeError: invalid type comparison. 

При выполнении:

df.loc[df['A'] == 'hey']

Затем я сделал другое условие:

df.loc[df['A'].notnull() & (df['A'] == 'hey')] 

Здесь я получаю ту же ошибку.

Я совершил хак, где я изменил все нулевые значения в столбце А на '', но это не красиво, но в любом случае приятно сначала выбрать все строки, в которых столбец А не равен нулю, а затем оттуда все те, кто равно "эй"?

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Полагаю, здесь должно быть какое-то числовое значение, поэтому попробуйте преобразовать значения в string s или сравните массив numpy:

newDf = df[df.A.astype(str) == 'hey']

Или:

newDf = df[df.A.values == 'hey']
0 голосов
/ 27 июня 2018

Для значений null / NaN ваша логика в порядке. Ниже приведен пример. Вы должны предоставить минимальный и проверяемый пример с указанием номеров версий для Python / Pandas.

df = pd.DataFrame({'col': [np.nan, None, 'hey', 45.4352, 'somestring']})

print(df.loc[df['col'] == 'hey'])

   col
2  hey
0 голосов
/ 27 июня 2018

Как насчет этого?

df['A'] = df['A'].astype(str)
newDf = df[df.A == 'hey']

Это должно дать вам новый фрейм данных со всеми строками, содержащими «эй» из столбца A?

...