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()]
添加回答
舉報