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

如何仅获取Pandas DataFrame的名称以导出CSV文件?

解决方案

核心问题说明

Python中无法直接从DataFrame对象本身获取它的变量名,因为变量名只是指向对象的引用。要实现你的需求,需要换一种方式关联DataFrame和它的名称,下面提供两种可行方案:


方案一:用字典管理DataFrame与名称(推荐)

用字典存储所有处理后的DataFrame,键为你想要的文件名(即原变量名),值为DataFrame对象,这样既可以轻松收集名称到df_liste,也能直接用于导出:

1. 修改数据清理函数

让函数返回处理后的DataFrame(避免原地修改的副作用):

import pandas as pd

def facture(x):
    df = pd.DataFrame(x)
    # 重命名含"Fact"的列
    for col in df.columns:
        if "Fact" in col:
            df.rename(columns={col: 'periode_facture'}, inplace=True)
    # 批量转换日期格式(比apply更高效)
    if 'periode_facture' in df.columns:
        df['periode_facture'] = pd.to_datetime(df['periode_facture'], format='%Y%m')
    return df

2. 用字典存储DataFrame与名称

# 初始化字典和列表
dfs_dict = {}
df_liste = []

# 示例:处理你的DataFrame
# 假设你有原始DataFrame叫df_raw1、df_raw2
processed_df1 = facture(df_raw1)
dfs_dict["processed_df1"] = processed_df1
df_liste.append("processed_df1")

processed_df2 = facture(df_raw2)
dfs_dict["processed_df2"] = processed_df2
df_liste.append("processed_df2")

3. 修改导出函数

遍历字典的键值对,用键作为CSV文件名:

def export(df_dict):
    for df_name, df in df_dict.items():
        df.to_csv(f'{df_name}.csv', encoding='utf-8', index=False)  # 建议加index=False避免导出索引列

# 调用导出
export(dfs_dict)

方案二:给函数传入DataFrame的名称参数

每次调用清理或导出函数时,手动传入对应的名称,适合少量DataFrame的场景:

1. 带名称参数的清理函数

def facture(x, df_name):
    df = pd.DataFrame(x)
    # 重命名逻辑同方案一
    for col in df.columns:
        if "Fact" in col:
            df.rename(columns={col: 'periode_facture'}, inplace=True)
    if 'periode_facture' in df.columns:
        df['periode_facture'] = pd.to_datetime(df['periode_facture'], format='%Y%m')
    # 把名称加入列表
    df_liste.append(df_name)
    return df

2. 带名称参数的导出函数

def export(df, df_name):
    df.to_csv(f'{df_name}.csv', encoding='utf-8', index=False)

3. 调用示例

df_liste = []

processed_df1 = facture(df_raw1, "processed_df1")
export(processed_df1, "processed_df1")

processed_df2 = facture(df_raw2, "processed_df2")
export(processed_df2, "processed_df2")

# 此时df_liste就是["processed_df1", "processed_df2"]

额外优化建议

  • 处理日期时,避免用apply逐行处理,直接用pd.to_datetime批量处理,效率更高且代码更简洁。
  • 导出CSV时建议加上index=False,避免把DataFrame的索引列导出到文件,减少Power BI处理时的额外步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:05:20