【问题标题】:Pandas - Getting a Key Error when the Key ExistsPandas - 当密钥存在时获取密钥错误
【发布时间】:2017-10-01 23:17:23
【问题描述】:

我正在尝试在 Pandas 中加入两个数据框。

第一帧称为 Trades,包含以下列:

TRADE DATE
ACCOUNT
COMPANY
COST CENTER
CURRENCY

第二个框架称为 Company_Mapping,包含以下列:

ACTUAL_COMPANY_ID
MAPPED_COMPANY_ID

我正在尝试使用此代码加入他们:

trade_df = pd.merge(left=Trades, right = Company_Mapping, how = 'left', left_on = 'COMPANY', right_on = 'ACTUAL_COMPANY_ID'

这会返回:

KeyError: 'COMPANY'

我仔细检查了拼写,COMPANY 显然属于 Trades,但我不知道是什么原因造成的。

有什么想法吗?

谢谢!

【问题讨论】:

  • print Trades.columns 并报告打印出来的内容。
  • @piRSquared 交易日期、账户、公司、成本中心、货币
  • 列名中是否有多余的字符?喜欢TRADE DATE
  • 这不是它的呈现方式。它看起来像Index(['co'], dtype='object')。请复制并粘贴打印语句的输出表格
  • 谢谢你,你的问题就在这里。您有一个带有大混搭字符串的列。看df.shape。它应该是一些以1 作为第二个元素(x, 1) 的元组。如果您想解决这个问题,您需要向我们展示您正在解析的文件的示例,或者数据框的示例,以便我们修复它。然后你的合并应该工作。此外,您的其他数据框可能会遇到同样的问题。

标签: python python-2.7 pandas


【解决方案1】:

您的 Trades 数据框有一个列,其中所有预期的列名都混合在一起成为一个字符串。检查解析文件的代码。

【讨论】:

    【解决方案2】:

    本质上,当没有这样的列名时,pandas python 中会显示 keyError,例如,您正在输入 df.loc[df['one']==10] 但列名“一个不存在”,无论它是否存在并且您仍然遇到相同的错误except 语句我的问题是使用 try 和 except 语句解决的。

    例如

    try:
       df_new = df.loc[df['one']==10]
    except KeyError:
       print('No KeyError')
    

    【讨论】:

      【解决方案3】:

      确保以正确的分隔符阅读文件。

      df = pd.read_csv("file.csv", sep=';')
      

      df = pd.read_csv("file.csv", sep=',')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 2018-12-28
        • 2022-07-23
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多