我有以下数据帧:
print(df_a)
mukey DI PI
0 100000 35 14
1 1000005 44 14
2 1000006 44 14
3 1000007 43 13
4 1000008 43 13
print(df_b)
mukey niccdcd
0 190236 4
1 190237 6
2 190238 7
3 190239 4
4 190240 7
当我尝试连接这些数据帧时:
join_df = df_a.join(df_b, on='mukey', how='left')
我得到了错误:
*** ValueError: columns overlap but no suffix specified: Index([u'mukey'], dtype='object')
为何会这样呢?数据帧具有共同的'mukey'
值。
发布于 2014-10-30 21:24:22
您发布的数据片段上的错误有点隐蔽,因为没有通用值,连接操作失败,因为值不重叠,它要求您提供左侧和右侧的后缀:
In [173]:
df_a.join(df_b, on='mukey', how='left', lsuffix='_left', rsuffix='_right')
Out[173]:
mukey_left DI PI mukey_right niccdcd
index
0 100000 35 14 NaN NaN
1 1000005 44 14 NaN NaN
2 1000006 44 14 NaN NaN
3 1000007 43 13 NaN NaN
4 1000008 43 13 NaN NaN
merge
之所以有效,是因为它没有这样的限制:
In [176]:
df_a.merge(df_b, on='mukey', how='left')
Out[176]:
mukey DI PI niccdcd
0 100000 35 14 NaN
1 1000005 44 14 NaN
2 1000006 44 14 NaN
3 1000007 43 13 NaN
4 1000008 43 13 NaN
发布于 2016-11-27 14:02:49
.join()
函数使用的是作为参数传递的数据集的index
,因此您应该使用set_index
或使用.merge
函数。
请找到两个适用于您的情况的示例:
join_df = LS_sgo.join(MSU_pi.set_index('mukey'), on='mukey', how='left')
或
join_df = df_a.merge(df_b, on='mukey', how='left')
发布于 2017-06-24 17:25:03
此错误表示这两个表的1个或多个列名具有相同的列名。错误消息转换为:“我可以在两个表中看到相同的列,但在引入其中一个表之前,您没有告诉我重命名。”
在使用del df'column name‘时,您可以先删除其中一列,然后再从另一列引入它,或者使用lsuffix重写原始列,或者使用rsuffix重命名要引入它的列。
df_a.join(df_b, on='mukey', how='left', lsuffix='_left', rsuffix='_right')
https://stackoverflow.com/questions/26645515
复制相似问题