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

函数间传递DataFrame报错df未定义,如何实现函数输出复用?

问题分析与修复方案

代码存在的两个核心问题

  1. DataFrameConverter未返回生成的DataFrame
    你定义的DataFrameConverter函数只打印了DataFrame,但没有通过return语句将其返回。这导致你调用variable = DataFrameConverter(...)时,variable实际拿到的是None,而非生成的DataFrame。

  2. modifyDF函数未使用传入的参数
    modifyDF函数内部直接引用了未定义的变量df,但你实际是想使用传入的variable参数。函数内部没有绑定参数到可用变量,所以会抛出"df未定义"的错误。


修正后的完整代码

import pandas as pd

def DataFrameConverter(file):
    # 读取文件并构造DataFrame
    T = pd.read_fwf(file, header=None, names=['1','2','3','4','5','6','7','8','9'])
    T = T.rename(index={0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I'})
    df = pd.DataFrame(T)
    print(df)
    # 添加return语句返回生成的DataFrame
    return df

def modifyDF(df):
    # 使用传入的df参数,而非未定义的变量
    while df.isin(['X']).any().any():
        print('')
        x = input('row: ')
        y = input('col: ')
        v = input('value: ')
        print('')
        
        df.loc[x,y] = v
        print(df)

# 调用逻辑
file_name = input('File name: ')
# 接收返回的DataFrame
target_df = DataFrameConverter(file_name)
# 将DataFrame传入修改函数
modifyDF(target_df)

关键修改点说明

  • 在DataFrameConverter末尾添加return df,让函数能把创建好的DataFrame传递出去。
  • 修改modifyDF的参数名为df(也可以保留variable,但内部要统一使用该参数名),确保函数内部操作的是传入的DataFrame。
  • 调用时将返回的DataFrame赋值给变量,再传入修改函数,保证数据流的传递正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:35:24