我试图在函数内使用pandas和NumPy执行一些简单的转换。所需的转换是:
- 从df中删除'Verified'列
- 将数组转换为数据帧(df2)
- 合并两个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