python - 熊猫:如果另一列为空,则创建一个新列
问题描述
我正在尝试在日期框架中创建新列,以指示其余列的空白或非空白。我认为这应该相当简单,但我无法让代码完全正确......
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
解决方案
我怀疑列名是 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
推荐阅读
- jupyter-notebook - 我在 Anaconda3 上打开 jupyter 并出现内核错误,我该怎么办?
- json - 如何使用 Jira REST API 创建子组件
- oracle - Oracle Unusable Index 会减慢性能吗?
- docker - 在容器内写入文件时 Docker 权限被拒绝
- android - 从 URL 播放音频文件时出错
- javascript - Websocket 和自签名 SSL 证书有什么问题
- python - 如何将由时间、周和闰秒组成的 GPS 时间转换为 UTC 时间戳
- javascript - 如何编写更好的 JS 函数 - 带标签框的输入单选
- reporting-services - 用于 KPI 的 SSRS 数据集,多重计算
- unicode - 将破坏 OLAP 多维数据集的字符列表