Python - Pandas Dataframe 在导入时忽略 \
Posted
技术标签:
【中文标题】Python - Pandas Dataframe 在导入时忽略 \\【英文标题】:Python - Pandas Dataframe ignore \ when importingPython - Pandas Dataframe 在导入时忽略 \ 【发布时间】:2018-10-11 23:22:03 【问题描述】:我正在尝试使用 pandas 数据框将一个非常大的 CSV 文件(超过 25M 行)导入 python。
数据框具有以下列: - dest_profile - 名 - 姓 - ID - 骗局 - 公司名称
有时,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'
【问题讨论】:
你试过pd.read_csv(path, error_bad_lines=False, lineterminator='\n')
吗?
是的,我试过 lineterminator='\n' 但仍然遇到同样的问题。
【参考方案1】:
也许您可以创建一个新文件,将所有反斜杠替换为空字符串 ""
或其他替换字符。
一个例子 sn-p:
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
中的文件。
【讨论】:
我尝试过但遇到以下错误:UnicodeEncodeError Traceback (最近一次调用最后一次)以上是关于Python - Pandas Dataframe 在导入时忽略 \的主要内容,如果未能解决你的问题,请参考以下文章
利用Python进行数据分析:Pandas(Series+DataFrame)
python: pandas.DataFrame,如何避免keyerror?