2 回答
TA贡献1829条经验 获得超13个赞
差不多了,只需使用how参数 as'left'并添加dropna:
df1.merge(df2,how='left').dropna()
输出:
CCOL ColA ColB ColC ColD ColE ColF ColP ColR ColS
0 A 1.0 a b 23 45.0 2.7 vq 4.0 21.7
3 D 7.0 e s 45 2.0 8.0 gh 3.0 53.1
TA贡献1793条经验 获得超6个赞
好吧,我假设你想在 df1 和 df2 的列上扩展你的结果 df,基于一个特定列(存在于 df1 和 df2 中)的值,这将标识你想要扩展的行。
所以没有合并,而是在不同的轴上串联,如下面的示例所示:
df1 = pd.DataFrame({'num_legs': [2, 4, 8, 0],
'num_wings': [2, 0, 0, 0],
'num_specimen_seen': [10, 2, 1, 8]},
index=['falcon', 'dog', 'spider', 'fish'])
num_legs num_wings num_specimen_seen
falcon 2 2 10
dog 4 0 2
spider 8 0 1
fish 0 0 8
df2 = pd.DataFrame({'num_legs2': [2, 4, 3, 0],
'num_wings2': [2, 7, 77, 777],
'num_specimen_seen2': [10, 2, 1, 8]},
index=['falcon', 'dog', 'spider', 'fish'])
num_legs2 num_wings2 num_specimen_seen2
falcon 2 2 10
dog 4 7 2
spider 3 77 1
fish 0 777 8
newdf = pd.concat([df1.num_legs.loc[df1.num_legs == df2.num_legs2],
df1.num_wings, df2.num_wings2],
axis=1)
print(newdf)
num_legs num_wings num_wings2
falcon 2.0 2 2
dog 4.0 0 7
fish 0.0 0 777
spider NaN 0 77
排除一行,其中 num_legs != num_legs2。我想连接的其余列在连接方法中提供
我的结果中仍然有 nans。添加这个
newdf = newdf[newdf2['num_legs'].notna()]
添加回答
举报