私はこの最初のdataFrameを持っています
df1:
A B C D
Car 0
Bike 0
Train 0
Plane 0
Other_1 Plane 2
Other_2 Plane 3
Other 3 Plane 4
そしてこの他のもの:
df2:
A B
Car 4 %
Bike 5 %
Train 6 %
Plane 7 %
だから私はこの組み合わせを手に入れたい:
df1:
A B C D
Car 0 4 %
Bike 0 5 %
Train 0 6 %
Plane 0 7 %
Other_1 Plane 2 2
Other_2 Plane 3 3
Other 3 Plane 4 4
これを行うための最良の方法はどれですか?
dfとdf2のインデックスが同じである場合は、次を使用できます。
df['D'] = df2['B'].combine_first(df['C'])
出力:
A B C D
0 Car NaN 0 4 %
1 Bike NaN 0 5 %
2 Train NaN 0 6 %
3 Plane NaN 0 7 %
4 Other_1 Plane 2 2
5 Other_2 Plane 3 3
6 Other_3 Plane 4 4
インデックスが同じでない場合はmerge
、列Aで使用できます。
df_out = df.merge(df2, on ='A', how='left', suffixes=('','y'))
df_out.assign(D = df_out.By.fillna(df_out.C)).drop('By', axis=1)
または@piRSquaredの改善されたワンライナーを使用します:
df.drop('D',1).merge(df2.rename(columns={'B':'D'}), how='left',on ='A')
出力:
A B C D
0 Car NaN 0 4 %
1 Bike NaN 0 5 %
2 Train NaN 0 6 %
3 Plane NaN 0 7 %
4 Other_1 Plane 2 2
5 Other_2 Plane 3 3
6 Other_3 Plane 4 4
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加