我正在尝试使用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'
答案 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
中的文件。