2016-04-24 2 views
4

У меня есть импортированный файл xls в качестве фреймворка pandas, есть два столбца, содержащие координаты, которые я буду использовать для слияния dataframe с другими, которые имеют геолокационные данные. df.info() показывает 8859 записей, столбцы координаты имеют записи «8835 non-null float64».Выбор строк из DataFrame на основе наличия нулевого значения в определенном столбце или столбцах

Я хочу, чтобы нарисовать 24 строки (я предполагаю, что они являются пустыми) со всеми записями колонок, чтобы увидеть, нельзя ли использовать один из других столбцов (город с адресом улицы), чтобы вручную добавить координаты для этих 24 записей , То есть. return dataframe для столбца в df. ['Easting'] где isnull или NaN

Я адаптировал метод, указанный ниже: here;

df.loc[df['Easting'] == NaN] 

Но вернемся пустой dataframe (0 строк × 24 столбцов), который не имеет смысла (для меня). Попытка использовать Null или Non null не работает, поскольку эти значения не определены. Что мне не хватает?

ответ

5

Я думаю, что вам нужно isnull для проверки NaN значения с boolean indexing:

df[df['Easting'].isnull()] 

Docs:

Предупреждение

Надо иметь в виду, что в Python (и NumPy) , нан не сравнивают равные, но ничего не делают. Обратите внимание, что Pandas/numpy использует тот факт, что np.nan! = Np.nan и обрабатывает None как np.nan.

In [11]: None == None 
Out[11]: True 

In [12]: np.nan == np.nan 
Out[12]: False 

Так, по сравнению с выше, скалярным сравнением равенства по сравнению с None/np.nan не дает полезную информацию.

In [13]: df2['one'] == np.nan 
Out[13]: 
a False 
b False 
c False 
d False 
e False 
f False 
g False 
h False 
Name: one, dtype: bool 
+0

Спасибо за быстрый ответ, который работал очарование. Я новичок в python и не знал о наном и ничем другом. –

+0

Рад может вам помочь! Удачи! – jezrael

+0

Будучи интересным в стороне от этого, я использовал этот метод для удаления строк как часть процесса очистки как; 'NLUDData_Clean = NLUDData.dropna (subset = ['Easting'])' Несмотря на то, что у меня меньше записей, размер, возвращаемый запросом .info(), показывает, что использование памяти увеличилось с 1,6 + мб до 1,7 + мб, и это не проблема для меня но интересно знать, почему для будущего –