Python - Pandas Dataframe игнорирует \ при импорте - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь импортировать очень большой CSV-файл (более 25 миллионов строк) в python с использованием pandas dataframe.

Фрейм данных имеет следующие столбцы: - dest_profile - имя - Фамилия - Я бы - против - название компании

Иногда в названии компании указывается '\' (например, HPE \ HPI), и это вызывает ошибку импорта. Я добавил error_bad_lines = False в мой код pd.read_csv . Однако я хочу импортировать и эти строки.

Как мне пропустить \ в столбце название компании?

import pandas as pd
import numpy as np
df_1st_conns = pd.read_csv("D:\Downloads\LinkedIn\DataV2\1st_degree_nbrs.csv", error_bad_lines=False)

Он думает, что \ является разделителем столбцов Вот сообщение об ошибке.

b'Skipping line 22813: expected 6 fields, saw 7\nSkipping line 62807: expected 6 fields, saw 7\n'
b'Skipping line 152688: expected 6 fields, saw 7\nSkipping line 170013: expected 6 fields, saw 7\nSkipping line 222565: expected 6 fields, saw 7\nSkipping line 222644: expected 6 fields, saw 7\nSkipping line 240790: expected 6 fields, saw 7\n'

1 Ответ

0 голосов
/ 02 мая 2018

Возможно, вы могли бы создать новый файл, в котором все обратные косые черты заменены пустой строкой "" или другим символом замены.

Пример фрагмента:

input_csv_filename = "original.csv"
output_csv_filename = "no_backslashes.csv"

# Read original contents
with open(input_csv_filename, 'rb') as f:
    csv_contents = f.read()

# Replace backslash with empty string
# b'\\' is the bytes literal for b'\'
csv_contents = csv_contents.replace(b'\\', b'')

# Write replaced contents to the output csv file
with open(output_csv_filename, 'wb') as f:
    f.write(csv_contents)

Затем вы можете перейти к чтению выходного файла CSV с вашим кодом:

import pandas as pd

df = pd.read_csv(output_csv_filename)

Редактировать - 1 : Остерегайтесь, что это без разбора заменит все обратные косые черты в вашем исходном CSV-файле. Если вы уверены, что обратной косой черты не будет нигде, используйте этот подход.

Редактировать - 2 : Плохо, я изначально предполагал, что файл не будет содержать символы Юникода. Я изменил код, чтобы теперь иметь дело с файлами в bytes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...