2つのPandas DataFramesをマージしたいが、インデックスが一致する場合は特定のdf
の行だけをマージしたい。 df1.ix['apple']
がdf2.ix['apple']
より優先され、orange
とgrape
は一意であるため2台のPandas DataFrameをマージして、インデックスが一致する場合は別のレコードを取得する
だから私は
df1
A B
type model
apple v1 10 xyz
orange v2 11 pqs
df2
A B
type model
apple v3 11 xyz
grape v4 12 def
を持っている場合、私は
df3
A B
type model
apple v1 10 xyz
orange v2 11 pqs
grape v4 12 def
になるだろう。
私はいくつかのインデックス比較作業を試みていますが、df2.drop(df1.index[[0]])
は、df2
の内容全体を削除しています。
データフレームの両方がによって、類似した構造を持つマルチインデックス付け作成されます:あなたがしたい場合
MultiIndex(
levels=[[u'apple', u'orange', u'grape', ...], [u'v1', u'v2', u'v3', ... ]],
labels=[[0, 1, 2, 3, 4, 6, 7, 8, 9, 10, ...]],
names=[u'type', u'model']
)
私は私の質問を更新しましたが、私は複数のインデックスを持っています。 combine_firstを使用しているときは、インデックスをまとめてまとめているので、両方のリンゴで終わるでしょう。 '.groupby(level = 0)'で '.combine_first'を使うことは可能でしょうか? – getglad
@getglad:これは新しい質問として投稿し、さらに詳しい情報と、最小限の、完全で、検証可能な例(http://stackoverflow.com/help/mcve) –