首页 > 解决方案 > 熊猫:如果另一列为空,则创建一个新列

问题描述

我正在尝试在日期框架中创建新列,以指示其余列的空白或非空白。我认为这应该相当简单,但我无法让代码完全正确......

for column, row in df.iterrows():
if(pd.isnull(row[column])):
    df[column + 'Blank or Not'] = "blank"
else:
    df[column + 'Blank or Not'] = "not blank"

这是错误:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

当我将其更改为以下时:

for column, row in df.iterrows():
    if(pd.isnull(row[column])):
        df[str(column) + 'Blank or Not'] = "blank"
    else:
        df[str(column) + 'Blank or Not'] = "not blank"

这是错误:

 IndexError: index out of bounds

标签: pythonpandas

解决方案


我怀疑列名是 int,所以使用:

if(pd.isnull(row[column])):
    df[str(column) + 'Blank or Not'] = "blank"
else:
    df[str(column) + 'Blank or Not'] = "not blank"

或者在 python 3 中你可以使用 f-strings:

f"{column}Blank or Not"

编辑:我认为你想做一些稍微不同的事情:

In [21]: df
Out[21]:
    0  1
0 NaN  1

In [22]: df.isnull().applymap({True: 'Blank', False: 'Not Blank'}.get)
Out[22]:
       0          1
0  Blank  Not Blank

推荐阅读