对系列中缺少的日期时间值进行问题检查

时间:2019-04-03 17:43:21

标签: pandas python-3.6

我正在尝试根据现有列中的值满足的两个条件来创建派生列。需要满足的条件之一是,其中一列的值不能具有缺少的日期时间值(NaT)。我不断收到属性错误,说时间戳记对象没有属性isull,我不知道如何解决它。

我通过根据要包含的条件过滤DataFrame来检查条件语句是否正确。

以下是我的df包含的示例:

Sample df

我选择创建一个可以使用df.apply()应用的函数,因为这是我将定期进行的数据清理过程。

我正在尝试创建一个具有以下条件的标题为“ case_start_time”的新字段:

函数中使用的代码:

def case_start(df):
    if df[(df['procedure_type_zc'] == 'Infusion') & (df['line_start_time'].isnull() )]:
        return df['check_in']
    else:
        return 'Undefined'

并将此功能应用于df以创建新字段时:

df['case_start_time'] = df.apply(case_start, axis = 1)

我收到以下错误:

  

AttributeError :(“ Timestamp对象没有属性'isnull'”,   '发生在索引0')

这些是我df中值的dtypes:

csn                           int64
line_start_time      datetime64[ns]
procedure_type_zc            object
dtype: object

经过一些研究,我发现可以将.isnull()应用于熊猫中的日期时间值,这就是为什么我不确定如何解决错误的原因。

这是我用来过滤两种情况下的DataFrame的代码:

missing_line_time = sample_df[ (sample_df['procedure_type_zc'] == 'Infusion') & (sample_df['line_start_time'].isnull()) ]

根据我附加有sample_df的图像,此逻辑是正确的。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。这对我有用:

代替使用:

(sample_df['line_start_time'].isnull())

使用:

(sample_df['line_start_time'] is pd.NaT)

希望至少可以消除您当前的错误。