如何获取Pandas DataFrame中含空值/空白值的行号与对应列名
Pandas逐行校验空值实现方案
核心逻辑是先统一空值判断标准,再通过行遍历筛选空值对应的列名,最终可以直接生成符合要求的JSON数据上报。
完整实现代码
import pandas as pd import json import requests # 1. 构造示例DataFrame(实际使用时替换为你自己的数据源即可) df = pd.DataFrame({ 'ID': [100, 233, 344], 'Name': ['', 'Alex', 'Ruther'], 'Dept': ['Finance', '', 'Sales'], 'Zipcode': ['173212', '', '173453'] }) # 2. 统一空值判断规则:将全空白字符串(含空串、仅含空格的内容)替换为pd.NA,避免漏判 df = df.replace(r'^\s*$', pd.NA, regex=True) # 3. 存储异常行数据,后续直接转JSON发送请求 error_records = [] # 4. 逐行遍历校验 for index, row in df.iterrows(): # 行号从1开始计数,符合业务使用习惯 Row_Number = index + 1 # 筛选当前行空值对应的列名 Column_Names = row[row.isna()].index.tolist() # 仅当前行存在空值时输出、记录 if Column_Names: print(f"Row_Number = {Row_Number}") print(f"Column Names = {Column_Names}\n") error_records.append({ "row_number": Row_Number, "empty_columns": Column_Names }) # 5. 发送POST请求到下游接口示例 # post_url = "替换为你的下游接口地址" # headers = {"Content-Type": "application/json"} # resp = requests.post(post_url, data=json.dumps(error_records), headers=headers)
运行输出结果
Row_Number = 1 Column Names = ['Name'] Row_Number = 2 Column Names = ['Dept', 'Zipcode']
说明
- 如果你不需要上报所有异常行,而是逐行发送请求,可在循环内拿到
Row_Number和Column_Names后直接构造JSON发送即可,不需要存到error_records列表。 - 代码中的正则替换逻辑已经覆盖了空值、空白值两种判断场景,不需要额外写判断逻辑。
内容的提问来源于stack exchange,提问作者Anish Gupta
相关产品推荐
相关产品推荐

