#python #pandas #dataframe #numpy
Вопрос:
Я пытаюсь выполнить некоторые простые преобразования, используя pandas и NumPy внутри функции. Необходимы следующие преобразования:
- Удалить столбец «Проверено» из df
- Преобразование массива в фрейм данных (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)
Я уверен, что есть действительно простое решение, но я полностью застрял и новичок. Любая помощь будет очень признательна.
Ответ №1:
проблема может заключаться в использовании функции 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
Комментарии:
1. Спасибо, Патрик. Это именно то, что я искал — очень признателен.
Ответ №2:
Если я вас правильно понимаю, вы хотите объединить 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
Комментарии:
1. Спасибо — да, я хотел объединить df и массив ВНУТРИ функции. Патрик (другой комментатор) указал, что вам нужно распечатать функцию, а не просто df: print(fun(df, массив))