在同一列上合并从df1到df2-扩展数据集



我犯了一个小错误,不知道如何正确合并两个df。我想在IBES_cusip上进行合并,将gvkey放入df1中。

我尝试了以下操作,但它只是扩展了数据集,并且不正确匹配:

df1 = df1.merge(df2, how = 'left', on =['IBES_cusip'])

df1

IBES_cusip       pends pdicity  ... ltg_eps  futepsgrowth 
0        00036110  1983-05-31     ANN  ...     NaN           NaN  
1        00036110  1983-05-31     ANN  ...     NaN           NaN  
2        00036110  1983-05-31     ANN  ...     NaN           NaN  
3        98970110  1983-05-31     ANN  ...     NaN           NaN  
4        98970110  1983-05-31     ANN  ...     NaN           NaN  
...         ...     ...  ...     ...           ...      
373472   98970111  2018-12-31     ANN  ...   10.00      0.381119  
373473   98970111  2018-12-31 

df2

gvkey IBES_cusip
0       024538   86037010
1       004678   33791510
2       066367   26357810
3       137024   06985P20
4       137024   06985P20
...        ...
833796  028955   33975610
833797  061676   17737610
833798  011096   92035510
833799  005774   44448210
833800  008286   69489010

您的主要问题是df2IBES_cusip列中包含重复值。从你提供的样品中,我可以看到

3       137024   06985P20
4       137024   06985P20

是相同的值,这将导致得到不需要的结果(输出中有重复的行(
试试这个

df1 = df1.merge(df2.drop_duplicates(subset=['IBES_cusip']), how='left', on='IBES_cusip')

从技术上讲,这应该只是在df1中添加一个gvkey列。

这假设您非常确定没有具有相同IBES_cusip的行与不同gvkey匹配,否则您需要首先弄清楚这一点。

相关内容

最新更新