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
相关产品推荐
相关产品推荐

