Pandas 布尔索引与 NaN

fos*_*all 4 python dataframe pandas

我有这个玩具示例,它捕获了我真正的问题:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['car there is','car not working', 'bus there is']})
df.iloc[1] = np.nan
idx = df['A'].str.contains('car')
df['IsCar'] = 0
df.loc[idx,'IsCar'] = 1
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此代码时,收到以下错误消息:

ValueError: cannot index with vector containing NA / NaN values
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做。有没有修复我不必用其他东西替换 NaN 的情况?

mir*_*ulo 5

有一个标志nastr.contains参阅文档),您可以将其设置为 False,这将为缺失值提供填充值。只需使用

idx = df['A'].str.contains('car', na=False)
Run Code Online (Sandbox Code Playgroud)