web-dev-qa-db-ja.com

Pandas Nanサポート付きのラムダ関数

Pandasで、Col1がNanであるかどうかを確認し、そうである場合は別の列のデータを使用するラムダ関数を記述しようとしています。コンパイル/実行するコード(以下)を取得するのに問題があります。正しく。

import pandas as pd
import numpy as np
df=pd.DataFrame({ 'Col1' : [1,2,3,np.NaN], 'Col2': [7, 8, 9, 10]})  
df2=df.apply(lambda x: x['Col2'] if x['Col1'].isnull() else x['Col1'], axis=1)

ラムダ関数を使用してこのようなソリューションを作成する方法について誰かが良いアイデアを持っていますか、それともラムダの能力を超えましたか?そうでない場合は、別の解決策がありますか?ありがとう。

4
Tyler Russell

pandas 0.24.2、私は

df.apply(lambda x: x['col_name'] if x[col1] is np.nan else expressions_another, axis=1)

pd.isnull()が機能しないためです。

私の仕事で、私は次の現象を見つけました、

実行結果なし:

df['prop'] = df.apply(lambda x: (x['buynumpday'] / x['cnumpday']) if pd.isnull(x['cnumpday']) else np.nan, axis=1)

結果が存在します:

df['prop'] = df.apply(lambda x: (x['buynumpday'] / x['cnumpday']) if x['cnumpday'] is not np.nan else np.nan, axis=1)
1
jiahe

Np.nan()を使用する必要があります

#import numpy as np
df2=df.apply(lambda x: 2 if np.isnan(x['Col1']) else 1, axis=1)   

df2
Out[1307]: 
0    1
1    1
2    1
3    2
dtype: int64
1
Allen