在熊猫中应用逻辑之前检查null

时间:2019-03-12 12:25:39

标签: python-3.x pandas

我目前正在执行以下操作。我需要先检查x是否为空,然后再对数据帧中的列执行任何数学运算。请让我知道如何实现?

df['converted_value'] = df['main_value'].apply(lambda x: (float(x)/10000) * 350000)

2 个答案:

答案 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)

如果您的意思是NaNnp.nan),那么您应该为NaN输入返回NaN,但是,正如注释中所建议的,您可以执行而是在这种情况下使用列操作。