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

PySpark动态向DataFrame添加指定格式行的问题求助

可复用的DataFrame添加默认行实现方案

以下是满足需求的可复用代码,只需修改id_column参数即可适配不同DataFrame:

import pandas as pd
import numpy as np

def add_default_row(df, id_column, id_value="-1", str_fill="Unknown"):
    default_row = {}
    for col in df.columns:
        if col == id_column:
            default_row[col] = id_value
        elif df[col].dtype == object:
            default_row[col] = str_fill
        else:
            # 针对不同数据类型设置对应空值
            if pd.api.types.is_numeric_dtype(df[col]):
                default_row[col] = np.nan
            elif pd.api.types.is_bool_dtype(df[col]):
                default_row[col] = pd.NA
            else:
                default_row[col] = pd.NA
    
    return pd.concat([df, pd.DataFrame([default_row])], ignore_index=True)

示例用法

假设你有如下测试DataFrame:

data = {
    "Product_ID": [1, 2, 3],
    "Product_COD": ["COD001", "COD002", "COD003"],
    "Price": [10.99, 20.5, 15.0],
    "In_Stock": [True, False, True]
}
df = pd.DataFrame(data)

# 调用函数,指定id列为Product_ID
df_updated = add_default_row(df, id_column="Product_ID")
print(df_updated)

关键说明

  • 类型判断:通过df[col].dtype == object识别字符串列,用Pandas官方类型判断方法区分数值、布尔等类型,适配更准确
  • 空值适配:数值型列用np.nan,布尔和其他类型用pd.NA,符合Pandas的空值规范
  • 复用性:适配其他DataFrame时,只需传入目标DF和对应的id_column参数即可,比如add_default_row(user_df, id_column="User_ID")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:33