函数间传递DataFrame报错df未定义,如何实现函数输出复用?
问题分析与修复方案
代码存在的两个核心问题
DataFrameConverter未返回生成的DataFrame
你定义的DataFrameConverter函数只打印了DataFrame,但没有通过return语句将其返回。这导致你调用variable = DataFrameConverter(...)时,variable实际拿到的是None,而非生成的DataFrame。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
相关产品推荐
相关产品推荐

