如何在Python函数中使用pandas和Numpy数据转换?



我试图在函数内使用pandas和NumPy执行一些简单的转换。所需的转换是:

  1. 从df中删除'Verified'列
  2. 将数组转换为数据帧(df2)
  3. 合并两个dfs

我已经复制了下面的代码。它在函数外工作得很好,但我不知道如何使它在函数内工作。

df = pd.DataFrame([[1, "John", True], [2, "Ann", False]], columns=["Id", "Login", "Verified"])
array = np.array([[1, 987340123], [2, 187031122]], np.int32)

df.drop(columns=['Verified'], inplace = True)
df2 = pd.DataFrame(data=id_password, index=["0", "1"], columns=["Id", "Password"])
df = df.merge(df2, how = 'inner')
print(df)

我相信有一个非常简单的解决方案,但我完全卡住了,是个初学者。如有任何帮助,不胜感激。

问题可能是在函数中使用print(),您应该返回数据帧而不是

def fun(df, array):
df.drop(columns=['Verified'], inplace = True)
df2 = pd.DataFrame(data=array, index=["0", "1"], columns=["Id", "Password"])
df = df.merge(df2, how = 'inner')
return(df)
然后可以输出调用函数 的结果
print(fun(df, array))

输出:

Id Login   Password
0   1  John  987340123
1   2   Ann  187031122

如果我理解正确,您想合并df(不含Verified列)和array:

df = pd.DataFrame(
[[1, "John", True], [2, "Ann", False]], columns=["Id", "Login", "Verified"]
)
array = np.array([[1, 987340123], [2, 187031122]], np.int32)
df_out = pd.merge(
df.drop(columns="Verified"),
pd.DataFrame(array, columns=["Id", "Password"]),
on="Id",
)
print(df_out)

打印:

Id Login   Password
0   1  John  987340123
1   2   Ann  187031122

最新更新