Python - Pandas Dataframe在导入时忽略\

时间:2018-05-01 22:20:41

标签: python pandas

我正在尝试使用pandas dataframe将非常大的CSV文件(超过25M行)导入到python中。

数据框包含以下列:   - dest_profile  - 名字  - 姓  - ID   - con   - company_name

有时,有一个' \'在company_name(例如:HPE \ HPI)中,它导致导入错误。我已将 error_bad_lines = False 添加到我的 pd.read_csv 代码中。但是,我也要导入这些行。

如何在company_name列中跳过\?

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 :(得分:0)

也许您可以创建一个新文件,其中所有反斜杠都替换为空字符串""或其他替换字符。

示例摘录:

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 :我的不好,我最初认为该文件不包含unicode字符。我已经通过代码更改为现在处理bytes中的文件。