複数の特定の既存の列から入力を受け取る関数を適用して、データフレームに2つの新しい列を追加します。ここでPandasを使用して特定の列入力から複数の列出力を返す関数を使用
は、複数の列を返すために働く私のアプローチではなく、:ここで
は私DATAFRAMEです:
d = {'a': [3,0,2,2],
'b': [0,1,2,3],
'c': [1,1,2,3],
'd': [2,2,1,3]}
df = pd.DataFrame(d)
私はこの機能を適用しようとしています:
def myfunc(a,b,c):
if a > 2 and b > 2:
print('condition 1',a,b)
return pd.Series((a,b))
elif a < 2 and c < 2:
print('condition 2',a,c)
return pd.Series((b,c))
else:
print('no condition')
return pd.Series((None,None))
このように:
df['e'],df['f'] = df.apply(lambda x: myfunc(x['a'],x['b'],x['c']),axis=1)
出力:
no condition
no condition
condition 2 0 1
no condition
no condition
DATAFRAME結果:
どうすれば入力複数の列と複数の列を取得しますか?
興味深いことに、私は最初にそれについて考えましたが、テストしたところ、自然とNAの列が2つありました(そして、私はパンダのもう1つの魔法を考えました) – Boud
これは私に奇妙な出力を与えています。条件の1つが真の場合、新しい列のすべての値に「なし」ではなくその出力が設定されます。 – sparrow
@sparrow実際に使用しているデータで更新する必要がありますが、これは私にとってはうまくいくようです。また、私はそこに 'None'を持っていることに注意してください。しかし、 'pandas'は' NaN'にするでしょう – piRSquared