Python函数返回两个DataFrame并传递至其他函数的问题
解决DataFrame拆分与传递问题
原代码的核心问题
- Python函数定义使用**大括号
{}**是语法错误,必须用冒号:搭配缩进代码块 - 缺少明确的列拆分逻辑,未正确生成目标DataFrame(df1、df2)
- 虽然返回列表本身可行,但Python原生支持多返回值(本质为元组),写法更直观
正确实现代码
import pandas as pd def splitdf(df: pd.DataFrame): # 定义两个DataFrame的目标列 df1_cols = ['id', 'Name', 'Age', 'sex'] df2_cols = ['id', 'Addr', 'mobile'] # 按列拆分并生成独立DataFrame(用copy避免视图警告) df1 = df[df1_cols].copy() df2 = df[df2_cols].copy() # 直接返回两个DataFrame,Python自动打包为元组 return df1, df2 # 示例数据初始化 data = {'id':[1,2,3,4], 'Name':['Tom', 'Jack', 'Steve', 'Ricky'], 'Age':[28,34,29,42], 'Addr':['addr1','addr2','addr3','addr4'], 'mobile':['mob1','mob2','mob3','mob4'], 'sex':['M','M','M','M'] } dftest = pd.DataFrame(data) # 接收拆分后的两个DataFrame df1, df2 = splitdf(dftest) # 示例calculate函数(仅接收DataFrame参数) def calculate(df: pd.DataFrame): print(f"处理的DataFrame列:{list(df.columns)}") # 此处编写你的计算逻辑 # 向calculate函数传递拆分后的DataFrame calculate(df1) calculate(df2)
关键说明
- 多返回值是Python标准写法,返回的元组可直接用
df1, df2 = ...解包,无需手动处理列表索引 - 使用
copy()生成独立DataFrame,避免后续操作修改原DataFrame(默认切片返回视图而非副本) - 若坚持返回列表,只需将
return df1, df2改为return [df1, df2],接收后用df_list[0]、df_list[1]传递即可——之前报错大概率是因为原函数未正确生成df1/df2,导致列表元素不是DataFrame类型
内容的提问来源于stack exchange,提问作者Hmm
相关产品推荐
相关产品推荐

