我试图匹配三列上的两个数据帧,即“ticker”,“year”和“quarter”。虽然第一个数据集包含两个观测值(即两行),每个季度,每年,每季度,第二个数据集仅包含一行......特别是,第一个数据帧始终在同一季度捕获两个不同的扬声器,而第二个数据帧仅捕获公司信息。现在,我想匹配数据帧,以便同一公司季度内第一个数据帧的两行中的每一行都与第二个数据帧中的相关行合并。连接两个数据帧,其中一个数据帧中的每一行与其他数据帧中的两行匹配
我的数据如下所示: DF
ticker year quarter exec_lname jobposition
XX 2009 3 A CEO
XX 2009 3 B CFO
XX 2009 4 A CEO
XX 2009 4 B CFO
YY 2007 1 C CEO
YY 2007 1 D CFO
YY 2007 2 C CEO
YY 2007 2 D CFO
ZZ 2008 3 F CEO
ZZ 2008 3 G CFO
dfnew
ticker year quarter eps calldate
XX 2009 3 x Mar
XX 2009 4 y Apr
YY 2007 1 z Feb
YY 2007 2 a Jan
ZZ 2008 3 b Dec
最后,它应该是这样的:
ticker year quarter exec_lname jobposition eps calldate
XX 2009 3 A CEO x Mar
XX 2009 3 B CFO x Mar
XX 2009 4 A CEO y Apr
XX 2009 4 B CFO y Apr
YY 2007 1 C CEO z Feb
YY 2007 1 D CFO z Feb
YY 2007 2 C CEO a Jan
YY 2007 2 D CFO a Jan
ZZ 2008 3 F CEO b Dec
ZZ 2008 3 G CFO b Dec
我想:
dfjoin = pd.merge(dfnew, df, how='left', left_on=['ticker', "year", "quarter"], right_on = ['ticker', "year", "quarter"])
但它返回新的数据集包含所有正确的行和列,但列eps和calldate完全充满了NaN。可能这是因为我想将两行合并到df中?问题不在于合并多个键 - 问题可能是在第一个数据框中,我总是有两行,具有相同的ticker/year/quarter组合。
我希望有人能帮助我! 谢谢! 朱莉娅
只需使用df1.merge(DF2,上= ['ticker','year','quarter']) – Vaishali
[基于Python熊猫中的多个键合并两个表]的可能的副本(https://stackoverflow.com/questions/32277473/merge-two-tables-based在python熊猫) – Vaishali
这使我的所有列,但0行... – Julia