我想检查以下数据帧是否有多个值为空,然后根据该条件为文档类型列分配一个0:
Document Type Totaal Factuurdatum
-- ----------------------------------- -------- --------------
0 0 nan nan
21 IngramMicro.AccountsPayable.Invoice 562.65 2021-03-16
我在一个专栏中使用以下工作代码:
df.loc[df['Totaal'] == 'NaN', 'Document Type'] = 0
但是,无法检查列列表中的一列是否为nan,然后分配0。。因此,这导致更频繁地分配0。
期望输出:
Document Type Totaal Factuurdatum
-- ----------------------------------- -------- --------------
0 0 nan nan
21 0 562.65 nan
如果列列表中至少有一个值匹配,我认为您需要DataFrame.any
进行测试,如果所有值匹配,则需要DataFrame.all
进行测试:
cols = ['Totaal','Factuurdatum']
df.loc[(df[cols] == 'NaN').any(axis=1), 'Document Type'] = 0
#laternative for test NaN and nan strings
df.loc[(df[cols].isin(['NaN', 'nan']).any(axis=1), 'Document Type'] = 0
如果NaN缺少值:
cols = ['Totaal','Factuurdatum']
df.loc[df[cols].isna().any(axis=1), 'Document Type'] = 0