2017-11-20 8 views
0

'max215'が 'max'より大きい場合、または 'min2015'が 'min'より小さい場合、データフレームの 'extrema'列が 'max2015'ラムダでpandas.applyを正しく適用する

これはdf.apply-lambdaの組み合わせでこれを解決する最もエレガントな方法だと思いますが、これで正しい解決策を得ることはできません。

コード:

x['extrema'] = x.apply(lambda df: df['max2015'] if df['max2015'] > df['max'] 
        else df['min'] if df['min2015'] > df['min'] 
        else np.nan, 
        axis=1) 

は、私は次のような結果を得るため、正しい解決策はないもの。

Result looks like this

私のミスか、別の良い解決策は何ですか?

ありがとうございます!

+0

データください – Dark

+0

を探しています。 – Wen

+0

申し込みが必要な理由は何ですか?私はそれがデータフレームを繰り返すために必要だと思います – laurenz

答えて

1

はたぶん、あなたはあなたがここに適用する必要はありませんnp.selectすなわちテキストの形で

Import numpy as np 
df = x.copy() 
df['extrema'] = np.select([df['max2015']>df['max'],df['min2015']>df['min']],[df['max2015'],df['min2015']],np.nan) 
+0

np.selectは私が探しているもののようなものです。アイデアありがとう!私はちょうどあなたのコードでいくつかのエラーメッセージを取得します。私はパンダDFをnp配列に変換する必要がありますか? – laurenz

+0

これはタイプミスで、私は自分の携帯電話で更新されたコードを試しています。 – Dark

関連する問題