【问题标题】:Is there any possibility that pd.read_csv causes KeyError?pd.read_csv 是否有可能导致 KeyError?
【发布时间】:2019-07-24 06:10:44
【问题描述】:

在分析时尚品牌的购买数据时,我的代码中不断出现“KeyError”。我猜这是因为我将 csv 文件导入 python 的方式是错误的,但我不知道要更改什么。如果您有任何解决方法的想法,请帮助我!

我曾经像使用 pd.read_csv 一样

cst = pd.read_csv(rf'G:~~~~customer.csv', engine='python', encoding='cp932', dtype='unicode')

我把它改成了

cst = pd.read_csv(r'G:~~~~customer.csv', encoding='cp932', dtype={'ID': 'str})

不幸的是,它从未奏效。

我只是想防止“KeyError”发生。

【问题讨论】:

    标签: python pandas python-import


    【解决方案1】:

    Pandas 没有 dtype 'unicode' 或 'str'。请看https://pbpython.com/pandas_dtypes.html 您必须使用 dtype={'ID': 'object'}。

    【讨论】:

    • 感谢您的回答!我尝试了你的建议,但没有解决问题......对不起,,,,
    【解决方案2】:

    这很可能是因为键之间可能有空格

    col1 , col2 , col3

    把它改成

    col1,col2,col3

    并确保你

    cst = pd.read_csv('G:~~~~customer.csv', encoding='cp932')

    您不需要dtype 以上几乎可以工作。否则请确保您使用来自Documentation 的正确dtypes

    【讨论】:

    • 感谢您回答我的问题。我尝试了你的建议,但没有奏效......
    • 您能否提供数据集的样本,以便我为您提供帮助?
    【解决方案3】:

    您写道:dtype={'ID': 'str})(我假设缺少右撇号 仅在您的问题中,不在您的代码中)。

    请注意,包含 string 值的列在 Pandas 中实际上属于 object 类型。

    所以也许你应该改成 dtype={'ID': 'object'})

    另一个提示:运行 read_csv(作为测试)不带 dtype 参数。 当然,ID列的类型这次会出乎意料, 但我们只想检查 read_csv 是否能够读取此文件。

    如果发生同样的错误,那么真正的原因在其他地方。

    还要检查您的输入是否实际包含 ID 列(区分大小写)。 如果您引用不存在的列,read_csv 可能会引发此错误。

    【讨论】:

    • 感谢您的回答!正如您所说(我假设缺少结束撇号仅在您的问题中,而不在您的代码中),我没有在我的代码中错过撇号。我将 str 更改为 object,但它没有帮助。另外,我尝试在没有 dtype 的情况下导入数据,但它也不起作用。最后用cst.columns和cst.keys()多次检查是否真的有ID列,确实有ID列。在这种情况下,您认为真正的问题与 pd.read_csv 无关吗?
    • 由于同样的错误发生without dtype,所以真正的原因在其他地方。也许您的输入文件在某些​​地方包含错误的内容。要检查这一点,请将您的 CSV 文件分成多个部分(每个部分中包含列名行)并尝试阅读每个部分。如果这些文件中的任何一个可以读取,而其他文件不能读取,则取其中一个“失败”文件,再次将其分成几部分并重复“部分读取”。还要看错误描述,也许有关于源代码行号的提示。然后非常彻底地看这一行。
    • 我在 Google 上进行了一些搜索,看来您的问题的真正根源是 cp932。在网上搜索 pandas cp932。找到了相当多的网站,但不幸的是(对我来说)是日文的。也许你(我想日语流利)将能够在那里找到一些提示。另一个提示:将您的输入文件转换为 UTF(我不确定是 UTF-8 还是 UTF-16)并尝试使用 UTF 编码读取。
    • 感谢您的帮助!事实上,删除 cp932 消除了一些错误(虽然不是全部)。我很欣赏你的建议!!!
    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 2019-08-28
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2018-02-23
    • 2015-07-30
    相关资源
    最近更新 更多