遍历数据框并选择空值

12

我正在尝试遍历一个数据框,其中列[myCol]存在空值。 我可以循环遍历数据框,但是当我指定只想查看空值时,就会出现错误。

最终目标是要强制将值放入空字段中,这就是为什么我首先进行迭代以识别它们的原因。

for index,row in df.iterrows():
    if(row['myCol'].isnull()):
        print('true')

AttributeError: 'str' object has no attribute 'isnull'

我尝试指定 column = 'None',因为当我打印数据帧的迭代时,这是我看到的值。但仍然没有成功:

for index,row in df.iterrows():
    if(row['myCol']=='None'):
        print('true')

No returned rows

非常感谢任何帮助!


你是不是想说 if(row['myCol'] is None):?否则这将与字符串“'None'”进行比较,而不是单例对象None - hiro protagonist
你的最终目标不太清晰。也许你可以提供输入表和期望输出表。我不确定你试图用什么替换空值,是向量数据还是其他数据框列或同一数据框中的其他列?在R中,如果你想用同一数据框中的值替换空值,简单的方法是 df$myCol <- ifelse(df$myCol == "", df$FillInColumn, df$myCol) - user5249203
1个回答

18
您可以使用pd.isnull()来检查一个值是否为空:
for index, row in df.iterrows():
    if(pd.isnull(row['myCol'])):
        print('true')

但看起来你需要使用df.fillna(myValue),其中myValue是你想要强制填充到空字段中的值。另外,如果要检查数据框中的NULL字段,可以调用df.myCol.isnull()而不是循环遍历每一行进行单独检查。


如果列的类型为字符串类型,则可能还需要检查它是否为空字符串:

for index, row in df.iterrows():
    if(row['myCol'] == ""):
        print('true')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接