次のような同じ次元の2つのデータフレームがあります。
df1
ID flag
0 1
1 0
2 1
df2
ID flag
0 0
1 1
2 0
両方のデータフレームで、加法フラグを示す新しい変数を作成したいと思います。したがって、新しい変数は次のようになります。
df1
ID flag new_flag
0 1 1
1 0 1
2 1 1
df2
ID flag new_flag
0 0 1
1 1 1
2 0 1
したがって、いずれかのフラグ列が1
新しい場合、新しいフラグはになります1
。私はこのコードを試しました:
df1['new_flag']= 1
df2['new_flag']= 1
df1['new_flag'][(df1['flag']==0)&(df1['flag']==0)]=0
df2['new_flag'][(df2['flag']==0)&(df2['flag']==0)]=0
1
両方で同じ数になると思いnew_flag
ますが、違います。これは私が行ごとに行かないからですか?この質問が好きですか?パンダは他の列の値に基づいて新しい列を作成します。そうであれば、両方のデータフレームの基準を含めるにはどうすればよいですか?
np.logical_or
これを実現するために使用できます。df1
最後の行を除いてすべて0に設定し、1
'sの列を取得するだけでなく、をnp.logical_or
使用astype(int)
してブール配列を1
とに変換した結果をキャストできます0
。
In [108]:
df1['new_flag'] = np.logical_or(df1['flag'], df2['flag']).astype(int)
df2['new_flag'] = np.logical_or(df1['flag'], df2['flag']).astype(int)
df1
Out[108]:
ID flag new_flag
0 0 0 0
1 1 0 1
2 2 1 1
In [109]:
df2
Out[109]:
ID flag new_flag
0 0 0 0
1 1 1 1
2 2 0 1
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加