私は2台のパンダデータフレームAとBを持っています。
データフレームには同じインデックスと列があり、異なるデータのみです。 私はインデックスのサブセットである追加の配列Xを持っています。私が達成したい何条件付きパンダデータフレームの結合
: もとBと同じインデックスおよび列を持った行列C。データの場合は、インデックスがXの場合はAの行エントリが必要です。それ以外の場合は、行エントリがBになります。
私はこれを達成するためのpythonic方法があると思ったが、コンパイルしません。だから、例えば私がAの指標とCデータフレームを作成してからのようなものを試みた:
C = C.apply(lambda i: A.ix[i.index] if i in X else B.ix[i.index])
を私は基本的に数学的にそれを解決するため、現時点で働いて何かを持っています。だからXに基づいて2つのブール値の配列を作成して、それぞれAとBからそれぞれのエントリを指定します。私はそれらのマトリックスによってとBを乗算した後C = + Bを行います。これは解決策を達成するために非常に長い間巻き込まれているようです。短くて読みやすいものの後ろにいた。私の現在のソリューションは、次のようになります。あなたは基本的に自分のデータフレームの1のコピーを取ると一致するインデックスに対するフィルタが他の1からレコードを更新
C = A.copy()
C.update(B.iloc[X])
:
def testIn(row):
return [x in X for x in row.index]
def testOut(row):
return [x not in X for x in row.index]
AMAP = C.apply(testIn, axis=0)
BMAP = C.apply(testOut, axis=0)
ANEW = pandas.DataFrame(AMAP*A)
BNEW = pandas.DataFrame(BMAP*B)
C = ANEW + BNEW
!ありがとうございました。私はこれを他の場所で使っていましたが、ここで解決策として見落としました。 – MMM