【问题标题】:Not able to parse csv file from pandas无法从熊猫解析 csv 文件
【发布时间】:2020-05-06 17:33:49
【问题描述】:

我正在编写 python 脚本,在其中我生成两个不同的 csv 文件,然后使用 pandas 读取这些文件。我可以使用 pandas 读取 file1,但在读取与 file1 格式相同(列名相同)但值不同/相同的 file2 时出现错误。请找到我收到的以下错误和我正在使用的示例代码。

错误:

Traceback (most recent call last):
  File "MSReport.py", line 168, in <module>
    fail = pd.read_csv('/home/cisapp/msLogFailure.csv', sep=',')
  File "/home/cisapp/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/home/cisapp/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "/home/cisapp/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 880, in __init__
    self._make_engine(self.engine)
  File "/home/cisapp/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 1114, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "/home/cisapp/.local/lib/python3.6/site-packages/pandas/io/parsers.py", line 1891, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 532, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

代码:

df = pd.read_csv(BASE_LOCATION+'/msLog_Success.csv', engine='python')
f_output = df.groupby('MSISDN').last()
#print(df)
print(f_output)
fail = pd.read_csv(BASE_LOCATION+'/msLogFailure.csv', engine='python')
fail = fail['MSISDN']
fail = fail.tolist()
for i in fail:
    succ = f_output[f_output.MSISDN != i]

在上面的示例代码中,读取文件df = pd.read_csv(BASE_LOCATION+'/msLog_Success.csv', engine='python') 时没有错误,但是在读取文件fail = pd.read_csv(BASE_LOCATION+'/msLogFailure.csv', engine='python') 时,我遇到了上述错误。请帮忙解决。

注意:我正在使用 python3 运行代码。

【问题讨论】:

  • stackoverflow.com/questions/40193452/… - 这可能会有所帮助
  • 检查文件是否存在 msLogFailure 可能是错字。也许msLog_Failure
  • 请至少包含几行来自 msLogFailure.csv 文件的初始行。还要看看字段之间使用了哪些分隔符。由于您没有传递 sep 参数,因此它们应该只是逗号。
  • @Valdi_Bo 请在下面找到带有 msLogFailure.csv 标题的文件输出。成功和失败文件的格式相同。 MSISDN,REQUEST_ID,STATE1,STATE2,STAETE3,NOTIFICATION 22969000034,OFFLINE_Notification_10.10.46.95_61755e28-f6a1-43de-ae2c-bad308c23e68,ENTERED,IN_PROGRESS,FAILURE,成功发送短信给订阅者

标签: python-3.x pandas


【解决方案1】:

我遇到了同样的问题并解决了。因此,您可以使用以下想法进行检查。

检查分隔符并像下面的例子一样提及

  1. pd.read_csv(BASE_LOCATION+'/msLog_Success.csv', encoding='utf-16', sep='\t')
  2. pd.read_csv(BASE_LOCATION+'/msLog_Success.csv', delim_whitespace=True)

您也可以在文件路径前添加“r”。

否则共享文件图片

【讨论】:

    【解决方案2】:

    您的 msLogFailure 文件示例看起来不错 - 6 个列名和 6 个数据字段。

    我查找了有关此错误消息的帖子,并找到了以下建议:

    • 将输入文件读入字符串变量,
    • read_csv 从这个字符串,例如pd.read_csv(io.StringIO(txt),...)

    也许这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      相关资源
      最近更新 更多