我犯了一个小错误,不知道如何正确合并两个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
您的主要问题是df2
在IBES_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
匹配,否则您需要首先弄清楚这一点。