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

Python函数返回两个DataFrame并传递至其他函数的问题

解决DataFrame拆分与传递问题

原代码的核心问题

  1. Python函数定义使用**大括号{}**是语法错误,必须用冒号:搭配缩进代码块
  2. 缺少明确的列拆分逻辑,未正确生成目标DataFrame(df1、df2)
  3. 虽然返回列表本身可行,但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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:30:51