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

如何在Python函数内使用pandas和NumPy完成数据转换操作

问题解决指南

第一步:修正代码中的显性错误

你当前提供的代码存在变量名不匹配问题:定义的NumPy数组变量名为array,但创建df2时传入的data参数是未定义的id_password,该问题会直接导致运行报错,首先需要修正变量名。

第二步:解决函数内不生效的核心问题

代码在函数外正常、函数内失效,基本都是以下两个原因导致:

  • 变量作用域问题:Python函数内部的变量默认是局部变量,如果你没有将处理后的DataFrame作为返回值返回,函数内的修改不会同步到函数外的全局变量
  • inplace=True的兼容性问题:pandas的inplace操作在局部作用域中偶发不生效的问题,更稳妥的写法是删除列时直接赋值给新变量,避免使用inplace参数

修正后的完整可用代码

独立封装函数的写法

import pandas as pd
import numpy as np

def data_transform():
    # 初始化原始数据
    df = pd.DataFrame([[1, "John", True], [2, "Ann", False]], columns=["Id", "Login", "Verified"])
    array = np.array([[1, 987340123], [2, 187031122]], np.int32)
    
    # 1. 删除Verified列
    df = df.drop(columns=['Verified'])
    # 2. NumPy数组转DataFrame
    df2 = pd.DataFrame(data=array, columns=["Id", "Password"])
    # 3. 合并两个DataFrame
    df = df.merge(df2, how='inner')
    
    # 核心:返回处理后的结果
    return df

# 调用函数接收处理结果
result_df = data_transform()
print(result_df)

外部传入数据的函数写法

如果需要将外部生成的df和数组传入函数处理,用如下写法:

import pandas as pd
import numpy as np

def data_transform(input_df, input_array):
    df = input_df.drop(columns=['Verified'])
    df2 = pd.DataFrame(data=input_array, columns=["Id", "Password"])
    return df.merge(df2, how='inner')

# 外部定义原始数据
df = pd.DataFrame([[1, "John", True], [2, "Ann", False]], columns=["Id", "Login", "Verified"])
array = np.array([[1, 987340123], [2, 187031122]], np.int32)
# 调用函数获取结果
result_df = data_transform(df, array)
print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:09:02