これらの2つのデータフレームを前提として、目的の出力データフレームを取得するにはどうすればよいですか?長い道のりは、でデータフレームの行をループし、aに変換した後iloc
にmap
関数を使用して、xとyをそれらのスコアにマップすることです。df2
dict
これは面倒なようで、大きなデータフレームで実行するには時間がかかります。よりクリーンな解決策があることを願っています。
df1:
ID A B C
1 x x y
2 y x y
3 x y y
df2:
ID score_x score_y
1 20 30
2 15 17
3 18 22
出力:
ID A B C
1 20 20 30
2 17 15 17
3 18 22 22
注:データフレームには多くの列があり、カテゴリとしてxとyだけではありません(おそらく20のカテゴリの領域にあります)。
ありがとう!
マスクの使用:
df1.set_index('ID', inplace=True)
df2.set_index('ID', inplace=True)
df1.mask(df1=='x',df2['score_x'],axis=0).mask(df1=='y',df2['score_y'],axis=0)
結果:
A B C
ID
1 20 20 30
2 17 15 17
3 18 22 22
多くの列があり、それらがすべて同じ方法で名前が付けられている場合は、次のようなものを使用できます。
for e in df2.columns.str.split('_').str[-1]:
df1.mask(df1==e, df2['score_'+e], axis=0, inplace=True)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加