首页 > 解决方案 > 检查变量是 NaN 还是 Pandas 数据框中的 None

问题描述

我有一个包含 2 个表的数据库。我正在将这两个表读入一个熊猫数据框(每个都有自己的数据框),然后将它们合并到一个数据框中。两个表都包含数据排序的共同时间值,如果有一些缺失的数据,则用以前的已知值填充。由于组合,列中的值可能是 NaN 或 None。

df_A = pd.read_sql('Select * from A', db_connection)
df_B = pd.read_sql('Select * from B', db_connection)
df = pd.concat([df_A, df_B]).sort_values('Time')
df = df.fillna(method='pad')

现在在这个数据帧上,我正在执行 apply 函数来对两个表中的数据执行一些计算。

在计算函数中,我想检查输入数据是否包含一些数据(如果输入之一是 NaN 或 None,则计算没有意义,并且会有异常 - 我想要事先避免)。

如何检查 from_A(或 from_B)是 NaN 还是 None?(或者还有其他解决方案吗?)

df['new_data'] = df.apply(lambda x: calculate (x.A, x.B))

def calculate (from_A, from_B):
   do some calculations here
   return data

我怎样才能检查

标签: pythondataframe

解决方案


calculate您可以使用函数在函数本身中显式检查这一点pd.isna()

import pandas as pd

def calculate (from_A, from_B):
   if (not pd.isna(from_A)) and (not pd.isna(from_B)):
       # perform the further calculation
   else:
      # do something else or skip

推荐阅读