У меня довольно сложный вопрос, я постараюсь изо всех сил. У меня есть функция a (), которая вызывает функцию b () и передает b () фрейм данных (называемый «df_a»). Я узнал, что это делается по ссылке, а это означает, что когда / если внутри функции b () я добавляю новый столбец во входной фрейм данных, это также изменяет исходный. Например:
def b(df_b):
df_b['Country'] = "not sure"
def a():
df_a = pd.DataFrame({"Name":['Mark','Annie'], 'Age':[30,28]})
b(df_a)
print(df_a) # this dataframe will now have the column "Country"
Пока все хорошо. Проблема в том, что сегодня я понял, что если внутри b () мы объединяем фрейм данных с другим фреймом данных, это создаст новый локальный фрейм данных.
def b(df_b):
df_c = pd.DataFrame({"Name":['Mark','Annie'], 'Country':['Brazil','Japan']})
df_b = pd.merge(df_b, df_c, left_on = 'Name', right_on='Name', how='left')
def a():
df_a = pd.DataFrame({"Name":['Mark','Annie'], 'Age':[30,28]})
b(df_a)
print(df_a) # this dataframe will *not* have the column "Country"
Итак, мой вопрос, как мне убедиться в этом например, столбец «Страна» также назначается исходному фрейму данных df_a без возврата его обратно? (Я бы предпочел не использовать «return df_b» внутри функции b (), поскольку мне пришлось бы изменить logi c во многих частях кода. Спасибо,