跟进这篇文章: Merging two columns which don't overlap and create new columns
import pandas as pd
df1 = pd.DataFrame([["2014", "q2", 2],
["2013", "q1", 1],],
columns=('Year', 'Quarter', 'Value'))
df2 = pd.DataFrame([["2016", "q1", 3],
["2015", "q1", 3]],
columns=('Year', 'Quarter', 'Value'))
print(df1.merge(df2, on='Year', how='outer'))
结果:
Year Quarter_x Value_x Quarter_y Value_y
0 2014 q2 2 NaN NaN
1 2013 q1 1 NaN NaN
2 2016 NaN NaN q1 3
3 2015 NaN NaN q1 3
但我想得到这个:
Year Quarter Value
0 2014 q2 2
1 2013 q1 1
2 2016 q1 3
3 2015 q1 3
注意:这不会产生预期的结果... :(
print(df1.merge(df2, on=['Year', 'Quarter','Value'], how='outer').dropna())
Year Quarter Value
0 2014 q2 2
1 2013 q1 1
...使用“左”或“右”或内部也不要削减它。
请您参考如下方法:
不确定这里发生了什么,但如果我知道
df1.merge(df2, on=['Year', 'Quarter', 'Value'], how='outer').dropna()
我得到:
Year Quarter Value
0 2014 q2 2.0
1 2013 q1 1.0
2 2016 q1 3.0
3 2015 q1 3.0
您可能想看一下 merge, join & concat docs .
最“直观”的方法可能是 .append() :
df1.append(df2)
Year Quarter Value
0 2014 q2 2.0
1 2013 q1 1.0
2 2016 q1 3.0
3 2015 q1 3.0
如果您查看源代码,您会发现它在幕后调用了 concat。
Merge 非常有用,适用于您的列 具有重叠值的情况。
