私は私の問題を解決するためのループではなく、ラムダ関数を使用することを好むパンダのデータフレームを持っています。パイソン - 複数の列上のラムダ関数は
問題はそうです。
df = pd.DataFrame({'my_fruits':['fruit', 'fruit', 'fruit', 'fruit', 'fruit'],
'fruit_a': ['apple', 'banana', 'vegetable', 'vegetable', 'cherry'],
'fruit_b': ['vegetable', 'apple', 'vegeatble', 'pineapple', 'pear']})
次のループを適用すると、
for i in np.arange(0,len(df)):
if df['fruit_a'][i] == 'vegetable' or df['fruit_b'][i] == 'vegetable':
df['my_fruits'][i] = 'not_fruit'
私は私が望む結果を得ることができています。これは、値vegetable
を含むfruit_a
またはfruit_b
列のいずれかであれば、私はmy_fruits
列がnot_fruit
に等しくなるようにしたいということです。
どのように私は可能なラムダ関数内でこれを設定することができます。 2つの列の入力を使用して異なる列の値を変更する方法を理解できませんでした。ありがとう!
あなたがboolean mask
で
Series.mask
を使用することができます
私は質問をしません。ラムダ*式*は、関数本体が 'return'のみで構成される特別な場合に関数を定義するための代替構文です。関数は 'for'ループの代替手段ではありません。 forループの特定の特殊ケースの代わりに、理解がありますが、ループはそのような特別なケースではありません。 –