Python Pandas - 即使数据帧中存在相同的列,pd.merge 上也会出现 KeyError

标签 python pandas

我正在尝试连接多个列上的两个数据框。即使所有列都存在于两个数据框中,我在执行 pd.merge 时也会遇到关键错误。

当我尝试进行 .join 时,我得到了 “ValueError:len(left_on) 必须等于“right”索引中的级别数”

数据框 1:

>>data.columns
Index(['weather.description', 'weather.icon', 'weather.id', 'weather.main',
       'dt', 'main.pressure', 'main.temp_min', 'main.temp_max', 'main.temp',
       'main.humidity', 'main.grnd_level', 'main.sea_level', 'wind.speed',
       'wind.deg', 'wind.gust', 'id', 'day', 'month', 'hour', 'dd', 'year'],
      dtype='object')

>>data.dtypes
weather.description     object
weather.icon            object
weather.id               int64
weather.main            object
dt                      object
main.pressure          float64
main.temp_min          float64
main.temp_max          float64
main.temp              float64
main.humidity            int32
main.grnd_level        float64
main.sea_level         float64
wind.speed             float64
wind.deg               float64
wind.gust              float64
id                     float64
day                     object
month                   object
year                    object
hour                    object
dd                      object
dtype: object

数据框 2:

>>df_crime.columns
Index(['beat', 'disposition', 'event_date', 'event_number', 'general_location',
       'location_1', 'map_x', 'map_y', 'type', 'type_description', 'ward',
       'day', 'year', 'month', 'dd', 'hour'],
      dtype='object')

>>df_crime.dtypes
beat                 object
disposition          object
event_date           object
event_number         object
general_location     object
location_1           object
map_x               float64
map_y               float64
type                 object
type_description     object
ward                float64
day                  object
year                 object
month                object
dd                   object
hour                 object
dtype: object

内连接查询:

result = pd.merge(data,
                  df_crime[['type_description']],
                  on=['year','month','dd','hour']
                  )

错误:

KeyError: 'year'

我在这里缺少什么?

最佳答案

我认为您需要合并中的'year','month','dd','hour'列:

当您在合并中仅采用 df_crime[['type_description']] 时,您会错过其他列。

您的 on 有 4 列,所有列都应出现在您在 pd.merge() 内获取的数据帧切片中

检查docs ,您可以在其中使用 suffixes= 方法来区分公共(public)列(仅供引用)

关于Python Pandas - 即使数据帧中存在相同的列,pd.merge 上也会出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54042178/

相关文章:

python - 我如何将 xaxis_date() 与 barh() 一起使用?

python - 在 Python 中合并具有数百万行的两个表

python - 删除 Pandas 中某个字符串后的行

python - 如何旋转表格并获得 Pandas 的总数?

python - 在 Python 中模糊查找扑克翻牌

python - Node.toprettyxml() 在 Python 中向 DOCTYPE 添加换行符

python - 更改Python中多维字典的值,其中嵌套字典包含在列表中

python - 将我的 web2py 应用程序上线

python - cumcount() 无

python - pandas-python 数据框更新列