【问题标题】:Key error on pandas merge (left join)熊猫合并的关键错误(左连接)
【发布时间】:2015-05-28 08:09:42
【问题描述】:

我在下面有两个数据框,df_purchase(1) 和 df_login(2)

+--------+-----+--------+------------+--------------------+-------------+--------------------------+
|        | age | gender |    ttp     |       count        | sum(amount) |          region          |
+--------+-----+--------+------------+--------------------+-------------+--------------------------+
|  49427 | 63  | M      | 824.731412 | 2                  | 25.00       | Omaha, Nebraska          |
|  28433 | 49  | M      | 1.166250   | 2                  | 41.94       | Catasauqua, Pennsylvania |
|   4162 | 29  | M      | 5.620949   | 2                  | 51.78       | Eagle Center, Iowa       |
|  18747 | 43  | M      | 153.502072 | 2                  | 23.84       | Pacific, Washington      |
|  45173 | 59  | M      | 0.027257   | 2                  | 13.98       | De Soto, Missouri        |
+--------+-----+--------+------------+--------------------+-------------+--------------------------+

+--------+-----+--------+------------+--------------------+-------------+--------------------------+
|        | age | gender | count      | region             |             |                          |
| 671766 | 84  | M      | 13900      | New York, New York |             |                          |
| 671166 | 84  | F      | 7619       | New York, New York |             |                          |
| 672209 | 85  | F      | 6483       | New York, New York |             |                          |
| 672671 | 85  | M      | 5808       | New York, New York |             |                          |
| 195201 | 34  | M      | 3817       | New York, New York |             |                          |
+--------+-----+--------+------------+--------------------+-------------+--------------------------+

我正在尝试使用以下 pandas 代码将 df_logins 加入 df_purchase 的年龄、性别和地区:

df = pd.merge(df_purchase, df_login[['count']],
                       how='left', on=['age', 'gender', 'region'])

但是,我不断收到此错误:KeyError: 'age' 有什么想法吗?

【问题讨论】:

  • 两张表中没有共同的年龄。因此,表之间没有交集。

标签: python pandas merge


【解决方案1】:

KeyError 是由此产生的:

df = pd.merge(df_purchase, df_login[['count']] <- this selects just count column,
                       how='left', on=['age', 'gender', 'region'])

您从df_login 中专门选择了一个列,您需要这个:

df = pd.merge(df_purchase, df_login,
                       how='left', on=['age', 'gender', 'region'])

我假设这不是您的完整数据,因为您在 df_login 的年龄和地区列中没有共同值。

【讨论】:

    【解决方案2】:

    为了更详细地解释@EdChum 的答案,您应该将“on”更改为“left_on”和“right_on”,以便更好地解析,如 Pandas 官方文档中所述:

    要加入的列或索引级别名称。这些必须在两者中找到 数据帧。如果 on 是 None 并且没有合并索引,那么这个 默认为两个 DataFrame 中列的交集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2017-09-14
      • 2023-03-25
      • 2018-07-11
      • 1970-01-01
      • 2018-09-26
      相关资源
      最近更新 更多