2014-11-18 8 views
0

Я пытаюсь использовать Pandas для удаления строк, содержащих информацию об отсутствующих этнических группах, хотя я не очень далек, поскольку я новичок в Pandas.Удаление строк, если они отсутствуют в некоторой переменной в Python Pandas

Использование 'print name [ethnic.isnull() == True]' Я могу визуализировать, какие люди с отсутствующей информацией об этнической принадлежности. Но в конечном счете я хочу: 1) записать индекс, добавив индексы индексов отсутствующих этнических групп в «недостающий массив», 2), а затем создать второй кадр, удалив всю строку с индексом, совпадающим с индексом в «недостающем» массиве.

В настоящее время я застреваю в цикле «для случая в кадре», где я пытаюсь напечатать имена тех, у кого отсутствует этническая принадлежность. Но моя программа заканчивается без ошибок, но ничего не распечатывает.

import pandas as pd 
from pandas import DataFrame, Series 
import numpy as np 

### Remove cases with missing name or missing ethnicity information 
def RemoveMissing(): 
    data = pd.read_csv("C:\...\sample.csv") 
    frame = DataFrame(data) 
    frame.columns = ["Name", "Ethnicity", "Event_Place", "Birth_Place", "URL"] 

    missing = [] 
    name = frame.Name 
    ethnic = frame.Ethnicity 

    # Filter based on some variable criteria 
    #print name[ethnic == "English"] 
    #print name[ethnic.isnull() == True] # identify those who don't have ethnicity entry 

    # This works 
    for case in frame: 
     print frame.Name 

    # Doesn't work 
    for case in frame: 
     if frame.Ethnicity.isnull() is True: 
      print frame.Name 

RemoveMissing() 
+0

не могли бы вы сделать что-то вроде хватает = кадр, то хорошо = frame.dropna() –

ответ

0

Это похоже на работу: [. Кадр [этничности] ISNULL()]

# Create a var to check if Ethnicity is missing 
index_missEthnic = frame.Ethnicity.isnull() 
frame2 = frame[index_missEthnic != True]