2

次の動作を行うために、パンダで 2 つのデータフレームを結合しようとしています: 指定された列で結合したいのですが、冗長な列がデータフレームに追加されないようにします。これは、インデックス列のオプションの引数を取らないように見えるということをcombine_first除いて類似しています。combine_first例:

# combine df1 and df2 based on "id" column
df1 = pandas.merge(df2, how="outer", on=["id"])

上記の問題は、「id」以外の df1/df2 に共通の列が df1 に (_x,_yプレフィックス付きで) 2 回追加されることです。どうすれば次のようなことができますか:

# Do outer join from df2 to df1, matching items by "id" but not adding
# columns that are redundant (df1 takes precedence if the values disagree)
df1.combine_first(df2, on=["id"])

これはどのように行うことができますか?

4

1 に答える 1

1

冗長な列を除外df2しながら列をからにマージしようとしている場合は、次のように動作するはずです。df1

df1.set_index("id", inplace=True)
df2.set_index("id", inplace=True)
df3 = df1.merge(df2.ix[:,df2.columns-df1.columns], left_index=True, right_index=True, how="outer")

ただし、これは明らかに、冗長でない列のみを取り込むため、からの値で値を更新しません。しかし、あなたが言ったように、一致しない値が優先されるので、おそらくこれでうまくいくでしょうか?df1df2df1

于 2013-03-28T01:43:55.197 に答える