#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[:][имя_столбца]