【发布时间】:2019-06-17 07:54:21
【问题描述】:
我有两个数据框。第一个是空的,但定义了列:
Empty DataFrame
Columns: [ID, 3120, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157]
Index: []
第二个数据框是:
3123 3124 3125 3126 3127
0 A B C D
稍后,我将有另一个数据框:
3146 3147 3148 3149 3150
0 X Y Z
等等。我想要的是将所有这些小数据框放在第一个中,以获得类似:
ID 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157
1 A B C D X Y Z
所以我在循环中所做的是:
df_main.merge(df_i, how='inner', on=df_i.columns)
在哪里,当 i=1 时:
df_main.columns:
Index(['ID', '3120', '3121', '3122', '3123', '3124', '3125', '3126',
'3127', '3128', '3129', '3130', '3131', '3146', '3147', '3148', '3149',
'3150', '3151', '3152', '3153', '3154', '3155', '3156', '3157'],
dtype='object')
df_i.columns:
Index(['3123', '3124', '3125', '3126', '3127'], dtype='object')
代码引发了这个 KeyError:
raise KeyError(key)
KeyError: Index(['3123', '3124', '3125', '3126', '3127'], dtype='object')
这怎么可能? df_i.columns包含并存在于df_main.columns中
提前谢谢你!
【问题讨论】:
-
我相信这个错误意味着pandas试图使用整个列表
['3123', '3124', '3125', '3126', '3127']作为一个列名。 -
试试这个:
df_main.merge(df_i, how='inner', on=df_i.columns.tolist())。在少数情况下,columns不能直接用作可迭代对象,这可能就是其中之一。 -
嗨,是的,这种方式可以部分工作......我没有得到 KeyError 但结果是一个空数据框:/ 也许合并不是我想要的? :/ 谢谢
标签: python python-3.x pandas dataframe merge