python - pandas dataframe如何對某列的空數據位置進行update?update的函數是自定義的,參數是同一行的另外兩列數據
問題描述
dataframe的某列fillna如何通過自定義函數的返回值進行填充?自定義函數需要以某幾列數據作為參數。類似下面代碼的功能怎么實現?df[’resultOfab’].fillna(myFunc(df[’acolumn’],df[’bcolumn’]))
貌似只有dataframe才有fillna函數,而且只能指定值作為填充。要么就是只能加減乘除某兩列得到新列數據。如果全部重新計算效率又很低。
問題解答
回答1:這個樣子嗎?有點不是太清晰是要做什么。。。
>>> df 0 1 20 1.0 NaN 5.01 2.0 3.0 6.02 3.0 5.0 7.03 4.0 NaN 8.0>>> def dfunc(df1, df2):... return df1 + 2 * df2...>>> df[1] = df[1].fillna(dfunc(df[0], df[2]))>>> df 0 1 20 1.0 11.0 5.01 2.0 3.0 6.02 3.0 5.0 7.03 4.0 20.0 8.0
或者這樣?
>>> df 0 1 20 1.0 NaN 5.01 2.0 3.0 6.02 3.0 5.0 7.03 4.0 NaN 8.0>>> def d_func(df1, df2):... return df1 + df2 * 2...>>> df[1] = np.where(df[1].isnull(), d_func(df[0], df[2]), df[1])>>> df 0 1 20 1.0 11.0 5.01 2.0 3.0 6.02 3.0 5.0 7.03 4.0 20.0 8.0
這種是向量式的 a?b:c
