You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环拼接DataFrame时如何保留无返回结果的空行?

解决查询无结果时空行丢失的问题

原代码中,当查询无返回结果时,convert得到的temp_df是空DataFrame,pd.concat不会将空行加入最终结果。要保留这些空行,只需在查询无结果时手动生成一行空数据,再进行拼接。

修改后的完整代码:

import numpy as np
import pandas as pd

from dl import authClient as ac, queryClient as qc 
from dl.helpers.utils import convert

import openpyxl as xl

wb = xl.load_workbook('/Users/somethingfile.xlsx')
sheet = wb['Sheet 1']

# 定义目标列名,需和查询返回的列对应
columns = ['a', 'b', 'c', 'd', 'e']
df = pd.DataFrame([], columns=columns)

for row in range(3, sheet.max_row + 1): 
    a0, b0, r = sheet.cell(row,1).value, sheet.cell(row,2).value, 0.001
    query = """
    SELECT a,b,c,d,e FROM smthng
      WHERE q3c_radial_query(a,b,{:f},{:f},{:f}) LIMIT 1
    """.format(a0,b0,r)
    response = qc.query(sql=query,format='csv')
    temp_df = convert(response,'pandas')
    
    # 若查询结果为空,生成一行填充NaN的空数据
    if temp_df.empty:
        temp_df = pd.DataFrame([[np.nan]*len(columns)], columns=columns)
    
    df = pd.concat([df,temp_df], ignore_index=True)

df.to_csv('output.csv', index=False)

关键修改说明:

  • 明确列名列表columns,确保空行的列结构和查询结果完全一致
  • 添加空结果判断:当查询无返回时,手动创建一行带NaN值的DataFrame
  • 拼接时启用ignore_index=True,避免循环中出现索引重复问题
  • 导出CSV时添加index=False,去除不必要的自动索引列

处理后,Excel中每一行对应的查询都会在最终CSV里保留一行数据,无结果时显示为空(NaN值)。

内容的提问来源于stack exchange,提问作者James Lane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:30:54