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

Python过滤DataFrame时空DataFrame与结果行共存,如何解决?

移除DataFrame过滤输出中的空DataFrame内容

问题场景

执行DataFrame过滤操作后,输出同时包含空DataFrame信息和符合条件的行,示例代码:

df1 = df.loc[df['ID'] == '2f45b-ii58-4927']
print(df1)

输出示例:

Empty DataFrame
Columns: []

     Date  sal       ID
0  14Jun   10100  2f45b-ii58-4927

该代码运行在Azure函数中,功能为递归读取Azure存储的JSON文件转DataFrame并过滤。当筛选行不来自首个读取的文件时,会输出空DataFrame的冗余信息,需要仅保留有效筛选结果。

完整代码如下:

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
import json
import pandas as pd
from pandas import DataFrame
from datetime import datetime
import uuid

filename = "raw/filename.json"

container_name="test"
constr = ""

blob_service_client = BlobServiceClient.from_connection_string(constr)
container_client = blob_service_client.get_container_client(container_name)
blob_client = container_client.get_blob_client(filename)
streamdownloader = blob_client.download_blob()

fileReader = json.loads(streamdownloader.readall())
df = pd.DataFrame(fileReader)
df1= df[df['ID'] == '2f45b-ii58-4927']
df1.head()

解决方案

1. 单文件过滤:仅输出非空结果

利用DataFrame的empty属性判断是否有有效数据,仅在非空时输出:

df1= df[df['ID'] == '2f45b-ii58-4927']
# 仅当筛选结果非空时打印/返回
if not df1.empty:
    print(df1)
    # Azure函数中可按需返回结果,例如转为JSON
    # return df1.to_json(orient='records')

2. 多文件递归场景:合并结果后统一输出

针对递归读取多个文件的场景,先收集所有符合条件的行到统一DataFrame,最后再输出,避免中间空结果:

# 初始化空DataFrame存储所有有效结果
result_df = pd.DataFrame(columns=['Date', 'sal', 'ID'])

# 递归读取文件的循环逻辑(示例)
for filename in your_file_list:
    blob_client = container_client.get_blob_client(filename)
    streamdownloader = blob_client.download_blob()
    fileReader = json.loads(streamdownloader.readall())
    df = pd.DataFrame(fileReader)
    
    filtered_df = df[df['ID'] == '2f45b-ii58-4927']
    # 仅合并非空结果
    if not filtered_df.empty:
        result_df = pd.concat([result_df, filtered_df], ignore_index=True)

# 最终输出所有有效筛选行
print(result_df)

这两种方式都能彻底移除空DataFrame的冗余输出,只保留符合条件的行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:19:22