Эффективный способ чтения непустых ячеек в столбце в файле CSV

#python #pandas #dataframe #large-files #import-from-csv

#python #pandas #фрейм данных #большие файлы #импорт из csv

Вопрос:

У меня есть большой файл python (> 500 000 строк), и я хотел бы прочитать непустые ячейки в столбце в dataframe (panda). Прямо сейчас я делаю это:

 df = pd.read_csv(filename)

myiter = []    

    for xiter, x in enumerate(df['Column_name']):

        if (np.isnan(x) == False):
            myiter.append(xiter)
  

Есть ли более эффективный способ сделать то же самое?

Ответ №1:

помечены ли они как NaN в вашем df ?

если да, то выполните

 df.dropna()
  

Комментарии:

1. Я понял, что он удаляет все строки, даже если в данном столбце нет NaN (поскольку другие столбцы также могут иметь NaN). Есть ли способ удалить только строки с NaN в указанном столбце?

2. это было бы невозможно, как бы вы отбросили значение col 1, если хотите сохранить значение col 2 и сохранить индекс? если вы хотите создать df из столбца без na, вы могли бы сделать newdf = df['Column_name'].dropna()

3. Я имел в виду, я просто хочу, чтобы они были в списке / массиве (не обязательно df).

4. data2 = [{‘a’: 1, ‘b’: 2}, {‘a’: 5, ‘b’: 10, ‘c’: 20},{‘b’:5,’c’:10}] pd.DataFrame(data2) Out[329]: a b c 0 1.0 2 NaN 1 5.0 10 20.0 2 NaN 5 10.0 pd.DataFrame(data2).dropna() Out[330]: a b c 1 5.0 10 20.0

5. Я, наконец, получил то, что искал: pd.DataFrame(df[column_name]). dropna().iloc[:][имя_столбца]