Python 函数导致输入 pandas 数据帧发生更改

问题描述 投票:0回答:1

我有一个 Python 函数,可以通过多种方式修改 pandas 数据框。这包括删除一列。与我的直觉相反,此删除操作不仅限于函数的环境(如果这是正确的词),而是传递到主编码环境,删除输入数据帧中的列。

import pandas as pd

data = {
  "name": ["Sally", "Mary", "John"],
  "age": [50, 40, 30],
  "qualified": [True, False, False]
}

df1 = pd.DataFrame(data)

def dropCol(df):

    df.drop(columns='age',inplace=True)


dropCol(df1) #show that the "age" col is now gone from the input df

有没有办法封锁函数,使其无法影响函数环境之外的对象?我希望我的输入不受影响,并且仅让函数通过

return
运算符影响对象空间。

python pandas
1个回答
0
投票

如果您不希望作为参数发送的对象发生更改,您可以发送副本。您可以将其发送为

df1.copy()

>>> import pandas as pd
>>> data = {
...   'name': ['Sally', 'Mary', 'John'],
...   'age': [50, 40, 30],
...   'qualified': [True, False, False]
... }
>>> df1 = pd.DataFrame(data)
>>> def drop_age_col(df):
...     df.drop(columns='age', inplace=True)
>>> drop_age_col(df1.copy())
>>> df1
    name  age  qualified
0  Sally   50       True
1   Mary   40      False
2   John   30      False
© www.soinside.com 2019 - 2024. All rights reserved.