首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas联接问题:列重叠,但未指定后缀

Pandas联接问题:列重叠,但未指定后缀
EN

Stack Overflow用户
提问于 2014-10-30 13:09:06
回答 5查看 249.8K关注 0票数 175

我有以下数据帧:

代码语言:javascript
复制
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

当我尝试连接这些数据帧时:

代码语言:javascript
复制
join_df = df_a.join(df_b, on='mukey', how='left')

我得到了错误:

代码语言:javascript
复制
*** ValueError: columns overlap but no suffix specified: Index([u'mukey'], dtype='object')

为何会这样呢?数据帧具有共同的'mukey'值。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-10-30 21:24:22

您发布的数据片段上的错误有点隐蔽,因为没有通用值,连接操作失败,因为值不重叠,它要求您提供左侧和右侧的后缀:

代码语言:javascript
复制
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之所以有效,是因为它没有这样的限制:

代码语言:javascript
复制
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
票数 192
EN

Stack Overflow用户

发布于 2016-11-27 14:02:49

.join()函数使用的是作为参数传递的数据集的index,因此您应该使用set_index或使用.merge函数。

请找到两个适用于您的情况的示例:

代码语言:javascript
复制
join_df = LS_sgo.join(MSU_pi.set_index('mukey'), on='mukey', how='left')

代码语言:javascript
复制
join_df = df_a.merge(df_b, on='mukey', how='left')
票数 42
EN

Stack Overflow用户

发布于 2017-06-24 17:25:03

此错误表示这两个表的1个或多个列名具有相同的列名。错误消息转换为:“我可以在两个表中看到相同的列,但在引入其中一个表之前,您没有告诉我重命名。”

在使用del df'column name‘时,您可以先删除其中一列,然后再从另一列引入它,或者使用lsuffix重写原始列,或者使用rsuffix重命名要引入它的列。

代码语言:javascript
复制
df_a.join(df_b, on='mukey', how='left', lsuffix='_left', rsuffix='_right')
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26645515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档