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

使用Databricks填充Pandas DataFrame仅获一行数据的问题排查

问题排查:Pandas DataFrame仅生成一行数据的原因及修复方案

问题根源

你在循环中始终使用**空的初始DataFrame df**去追加新行,然后将结果赋值给df1。这会导致每次循环都丢弃之前的结果,只保留当前循环的单条记录,最终仅剩下最后一个文件的路径。

修复代码

最优方案:直接从列表构造DataFrame

这是效率最高的方式,避免循环追加的性能损耗:

import pandas as pd

os_file_list = walk_dirz('dbfs:/mnt/landing/raw/NewData/Deltas')
# 直接将文件路径列表转为DataFrame
df = pd.DataFrame({'path': os_file_list})

备选方案:循环累加(需额外处理每行时使用)

如果需要对每个文件路径做自定义处理(比如提取文件名、解析时间戳),可以先初始化DataFrame,再循环追加到同一个对象:

import pandas as pd

os_file_list = walk_dirz('dbfs:/mnt/landing/raw/NewData/Deltas')
df = pd.DataFrame()

for i in os_file_list:
    print(i)
    # 这里可添加自定义处理逻辑,比如:
    # file_name = pathlib.Path(i).name
    new_row = {'path': i}
    # 追加到已有的df,而非空df
    df = df.append(new_row, ignore_index=True)

进阶优化(Databricks场景)

由于你使用的是Databricks,针对大数据量场景,推荐直接用Spark DataFrame处理,性能远优于Pandas:

from pyspark.sql.types import StringType
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
# 从文件路径列表创建Spark DataFrame
spark_df = spark.createDataFrame(os_file_list, StringType()).toDF("path")
# 小数据量下转Pandas DataFrame
df = spark_df.toPandas()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:45:20