Pandas Python заменяет пустые строки строкой - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть CSV, который в какой-то момент становится таким:

  57926,57927,"79961', 'dsfdfdf'",fdfdfdfd,0.40997048,5 x fdfdfdfd,
57927,57928,"fb0ec52878b165aa14ae302e6064aa636f9ca11aa11f5', 'fdfd'",fdfdfd,1.64948454,20 fdfdfdfd,"



                         US 



                "
57928,57929,"f55bf599dba600550de724a0bec11166b2c470f98aa06', 'fdfdf'",fdfdfd,0.81300813,10 fdfdfdfd,"



                         US 







                "
57929,57930,"82e6b', 'reetrtrt'",trtretrtr,0.79783365,fdfdfdf,"



                         NL 

Я хочу избавиться от этих пустых строк.До сих пор я пробовал следующий скрипт:

df = pd.read_csv("scedon_etoimo.csv")

df = df.replace(r'\\n',' ', regex=True)   

и

df=df.replace(r'\r\r\r\r\n\t\t\t\t\t\t', '',regex=True) 

, так как это ошибка, которую я получаю.До сих пор мне не удалось очистить мой файл и сделать то, что я хочу сделать.Я не уверен, что использую правильный подход.Я использую панды для обработки моего набора данных.Любая помощь?
"

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

На основе предоставленного вами фрагмента файла, вот как вы можете заменить те пустые строки, которые Pandas хранит в виде NaN, пустой строкой.

import numpy as np
df = pd.read_csv("scedon_etoimo.csv")
df = df.replace(np.nan, "", regex=True)

Это позволит вам делать все на базовом фрейме данных Pandas, не считывая ваши файлы более одного раза.При этом я бы также рекомендовал предварительно обработать ваши данные перед их загрузкой, поскольку зачастую это гораздо более безопасный способ обработки данных в неоднородных макетах.

0 голосов
/ 26 сентября 2018

Попробуйте:

df.replace(to_replace=r'[\n\r\t]', value='', regex=True, inplace=True)

Эта инструкция заменяет каждый \n, \r и Tab ничем.Из-за аргумента inplace нет необходимости снова заменять результат на df.

Альтернатива: Используйте to_replace=r'\s', чтобы исключить также пробелы, возможно, только в выбранных столбцах.

0 голосов
/ 26 сентября 2018

Сначала я * open и препроцессировал данные файла, а только потом передавал пандам

lines = []
with open('file.csv') as f:
    for line in f:
        if line.strip(): lines.append(line.strip())

df = pd.read_csv(io.StringIO("\n".join(lines)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...