基于id合并两个pandas DataFrame报KeyError: ['available'] not in index求助
错误原因
如果实际运行确实抛出KeyError: "['available'] not in index",首先排查你本地的df2列名是否和示例一致,确认有没有拼写错误、大小写差异、首尾带空格等问题。
你给出的示例代码的核心问题是两个表的关联列名不一致:
- 左表
df用于关联的列是listing_id - 右表
df2用于关联的列是id
你用on='listing_id'参数要求两个表都以listing_id列关联,但df2里没有这个列,必然会触发列不存在的报错。
修正代码
把merge行改为分别指定左右表的关联列,合并后删除多余的id列即可:
import pandas as pd d = { 'listing_id': [1,2,3,4], 'month': [1, 2, 3, 4], 'price': [79.00, 80.00, 90.00, 20.00]} df = pd.DataFrame(data=d) d2 = {'id': [1, 2, 3, 4], 'available': [5000, 8000,5000, 7000], 'someotherstuff': [2,3,4,5]} df2 = pd.DataFrame(data=d2) # 仅修改这一行即可 df = pd.merge(df,df2[['id','available']],left_on='listing_id', right_on='id', how='left').drop('id', axis=1)
输出结果
listing_id month price available 0 1 1 79.0 5000 1 2 2 80.0 8000 2 3 3 90.0 5000 3 4 4 20.0 7000
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

