熊猫加入问题:列重叠但未指定后缀

2024-10-03 21:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两个数据帧:

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

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”值。


Tags: columns数据dfon错误pilefthow
3条回答

.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')

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

您可以在使用del df['column name']从另一列引入前删除其中一列,或者使用lsuffix重新写入原始列,或者使用rsuffix重命名正在引入的列。

df_a.join(df_b, on='mukey', how='left', lsuffix='_left', rsuffix='_right')

您在发布的数据片段上的错误有点晦涩,因为没有公共值,连接操作失败,因为这些值没有重叠它要求您为左侧和右侧提供一个后缀:

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

相关问题 更多 >