1
2つの異なるデータフレームに同じ名前の2つの列の値をマージするには、最初のデータフレームの値を2番目のデータフレームの列の値で更新する2番目のデータフレームで利用可能(つまり、nullではない)ですか?その後、pandas:DataFramesをマージするときに列の値を更新する
df3 = pd.DataFrame([ 1, 2, 4, 5], columns=["a"], index=[0,1,2,3])
私は最初のマージを実行することにより、これを行う方法を考えることができますが()と:
2つのデータフレームがあるのであれば:
df1 = pd.DataFrame([ 1, 2, None, 3], columns=["a"], index=[0,1,2,3])
df2 = pd.DataFrame([ None, None, 4, 5], columns=["a"], index=[0,1,2,3])
その後、所望の出力は次のようになりカスタム関数で 'apply()'を使って結果の列の値をマージすると、これはあまりにも複雑に思えます。さらに、私は複数の列のためにこれを行う必要があります。これを行うよりエレガントな方法はありますか?
私が探している関数は、後者のパラメータが当然存在しないという事実を除いて、 'overwrite_values = True'で左マージを実行するように振る舞います。
A 2列のやや複雑な例:
df1 = pd.DataFrame([ [1, 'a'], [2, 'b'], [None, None], [3, None] ],
columns=["a", "b"], index=[0,1,2,3])
df2 = pd.DataFrame([ [None, None],[None, 'x'],[4, 'c'], [5, 'd'] ],
columns=["a", "b"], index=[0,1,2,3])
その後、所望の出力は次のようになります。
df3 = pd.DataFrame([ [1, 'a'], [2, 'x'], [4, 'c'], [5, 'd']],
columns=["a", "b"], index=[0,1,2,3])
多くの感謝!
確かに、速い答えてくれてありがとう!この場合、必要な出力を得るためにdf2.combine_first(df1)にする必要があります(関数を呼び出す2番目のデータフレーム)。 – tibi3000