我正在尝试根据现有列中的值满足的两个条件来创建派生列。需要满足的条件之一是,其中一列的值不能具有缺少的日期时间值(NaT)。我不断收到属性错误,说时间戳记对象没有属性isull,我不知道如何解决它。
我通过根据要包含的条件过滤DataFrame来检查条件语句是否正确。
以下是我的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的图像,此逻辑是正确的。
答案 0 :(得分:0)
我遇到了类似的问题。这对我有用:
代替使用:
(sample_df['line_start_time'].isnull())
使用:
(sample_df['line_start_time'] is pd.NaT)
希望至少可以消除您当前的错误。