我目前正在执行以下操作。我需要先检查x是否为空,然后再对数据帧中的列执行任何数学运算。请让我知道如何实现?
df['converted_value'] = df['main_value'].apply(lambda x: (float(x)/10000) * 350000)
答案 0 :(得分:1)
与NaN
一起使用的函数非常好,速度更快,是向量化的替代方法:
df['converted_value'] = (df['main_value'] /10000) * 350000)
一种可能的解决方案是仅过滤不丢失的值并应用函数:
mask = df['main_value'].notna()
f = lambda x: function_not_working_with_nan(x)
df.loc[mask, 'converted_value'] = df.loc[mask, 'main_value'].apply(f)
答案 1 :(得分:1)
当您说“ null”时,我不确定您是指None
还是NaN
(如np.nan
中的浮点数)。
如果您是说None
:
df['converted_value'] = df['main_value'].apply(lambda x: (x/10000) * 350000 if x is not None else None)
如果您的意思是NaN
(np.nan
),那么您应该为NaN
输入返回NaN
,但是,正如注释中所建议的,您可以执行而是在这种情况下使用列操作。