함수 호출로 가변 범위를 이해하려고합니다.가변 범위 (함수 포함)
토론 할 코드.
import numpy as np
import pandas as pd
# Function to add a column with random stuff to a dataframe
def Add_a_column(df):
df['Col2']= np.sign(np.random.randn(len(df)))
return df
# Create a dataframe with random stuff
df_full = pd.DataFrame(data=np.sign(np.random.randn(5)), columns=['Col1'])
df_another = Add_a_column(df_full)
- df_full는 글로벌이다. 옳은?
- df_another는 전역입니다. 옳은?
- df는 Add_a_column의 로컬 항목입니다. 옳은? 내가 코드를 실행하면
, 열이의 함수에 의해 수정되는 내가 df_full 않도록하려면 어떻게
In[8]: df_full
Out[8]:
Col1 Col2
0 -1.0 -1.0
1 1.0 -1.0
2 -1.0 1.0
3 1.0 1.0
4 1.0 1.0
을 df_full 추가를 얻을?
* name *'df'는 함수에 국한되지만'df'와'df_full'은 * 같은 * 객체를 참조합니다. –
은 함수에서 df_full을 복제하고 새 객체를 조작 한 다음 다시 보내려는 것처럼 들립니다. – Fallenreaper
@DanielRoseman이 말한 바를 조금 늘리고 Pandas에 대해 전혀 몰라도'df_full'을'Add_a_column' 함수에 전달하기 전에 복사해야한다고 생각합니다. (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html 참조) 여기서 왜 이런 일이 발생하는지 읽어보십시오. https://stackoverflow.com/q/2612802/289011 – BorrajaX