私は2つの列を持つデータフレームを持っています。私は3番目の列を作成したいな、というのCol1は他に、その後、COL3 = Col2に、nullの場合COL3 =のCol1 * 2他の2つの関数として列を作成するには?
私が試してみました:
def myf(col1,col2):
if pd.isnull(col1):
return col2
else:
return col1 * 2
df['col3'] = df.apply(lambda x: myf(df['col1'], df['col2']), axis= 1)
が、私はエラーを取得する」」というシリーズの真理値は曖昧です "。
どうすればこの問題を解決できますか? 私はそれは決して疑問だと理解していますが、私の小さな、使い慣れたSQLの脳は、パンダの仕組みを理解するために(まだまだ時間がかかる)まだ苦労しています。おそらく私は非常に愚かです、恐らくpandasのドキュメントはおそらく両方とも非常に貧弱です:)
私の適用はDataFrameの行/列ベースで動作し、applymapはDataFrame上で要素ごとに動作し、マップが動作することを理解しています要素的にはSeriesであり、pd.isnullがT/F配列を返すのでエラーが発生することを理解しています。
しかし、このような場合にapplymapやmapを使用する方法はわかりません。この場合、他の2つの列が入力されます。
ありがとうございます!
代わりに 'DF [ 'COL3を'] = np.where行う(df.Col1.isnull()、df.Col2、df.Col1 * 2) ' – Zero