Я пробовал различные ранее заданные вопросы, и пока ни один из них не помог. У меня есть файлы csv, которые я собираюсь загрузить в pandas. Я пробовал ниже:
import pandas as pd
ONTs=pd.read_csv("myfile.csv", sep="|", error_bad_lines=False,usecols=[*range(0,10)], index_col=False)
ONTs.columns=["ONTID","OPSTATE","ADMIN","RANGED","EQPT","DESC1","DESC2","SLID","ACTSW","SERIAL"]
Некоторые столбцы показывают «Nans», хотя на самом деле они имеют значения в CSV. Я полагал, что в некоторых строках есть некоторые (скрытые, непечатаемые, управляющие) символы, такие как « ^ M (5e 4d в шестнадцатеричном формате) », которые обрабатываются как символы новой строки? . Ниже приведен пример строки, в которой столбцы разделены знаком «|».
702-KMISR:R1.S1.LT4.PON8.ONT77|Up|Unlocked|Yes||MOSABCsa4-ONT2|172317233|17-231-7233^M|ACTSW|DISABLED|MYSNB3665846|11.2|-27.2|PASSive|ACTSW|
Я пробовал ниже, используя sed, и он удаляет плохой символ, и я могу загрузить файл в pandas без проблем:
sed -i 's/^M//g' myfile.csv
здесь ^M
не является символом, который я мог бы ввести, но мне пришлось нажимать буквальные клавиши Control+V
и Control+M
, чтобы создать этот символ в командной строке.
Обновление :: Я решил, что ^ M на самом деле "\ r". и я смог ничего не заменить, используя sed. Я думаю, было бы легко заменить '\ r', если файл читается как двоичный. возможно ли такое (чтение как двоичный) в методе pandas read_csv?
Эти файлы csv содержат миллионы строк, и эти нежелательные символы распределены по разным столбцам случайным образом. Мне нужно знать:
1: почему такие персонажи создают проблемы при "|" это разделитель?
2: как удалить плохие символы из файлов csv в python?
3: можно ли обрабатывать такой файл / данные при загрузке файла в pandas , вместо отдельного удаления таких символов и последующего чтения csv?