如何在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
相关产品推荐
相关产品推荐

