【发布时间】:2019-01-29 19:52:10
【问题描述】:
这是我对 Python 类的期望。我有一个具有特定值的变量num。类实例x 最初调用它,然后类使用函数add_one 更改其self.num 值。 num 保留其原始值。
class Test_Class:
def __init__(self, num):
self.num = num
def show(self):
return self.num
def add_one(self):
self.num = self.num+1
num = 50
x = Test_Class(num)
x.add_one()
print (x.show())
print (num)
# Output
# 51
# 50
但由于某些奇怪的原因,我对 Pandas 数据框使用了相同的逻辑,但好像obj.df 直接链接到原始df_test,所以当我通过add_new_col 更改obj_df 时,它还更改了df_test。我想要的是df_test 不添加NEW_COL。
df_test = pd.DataFrame({'Col1':[1, 2, 3, 4, 5], 'Col2':[3, 4, 5, 6, 7]})
class Test_Class:
def __init__(self, df):
self.df = df
def add_new_col(self, df, column_name): # this function requires a df as parameter
df[column_name] = 100
obj = Test_Class(df_test)
obj.add_new_col(obj.df, 'NEW_COL')
print (obj.df)
print (df_test)
# Output
Col1 Col2 NEW_COL
0 1 3 100
1 2 4 100
2 3 5 100
3 4 6 100
4 5 7 100
Col1 Col2 NEW_COL
0 1 3 100
1 2 4 100
2 3 5 100
3 4 6 100
4 5 7 100
【问题讨论】:
标签: python-3.x pandas class object