python - 数据帧参数被函数更改。如何避免其变异?

标签 python pandas dataframe mutability

我知道 pandas 数据框是可变的。

我正在将数据帧传递给函数,并且我不希望原始数据帧被更改,但事实确实如此。 我以为只要重新分配 dataframe 变量并避免使用 .drop(inplace=True) 和 .reset_index(inplace=True) 就可以了,但事实并非如此。
.dropna() 和 .reset_index() 有什么解决方法可以避免我的原始数据帧被突变?

谢谢。

def makeChoice():
    return bool(random.getrandbits(1))
def makeChange(row,choice):
    if choice==True:
        result = row['b']
    else:
        result = np.nan
    return result    
workingDF['b']= workingDF.apply(lambda row: makeChange(row, makeChoice()), axis=1)
workingDF = workingDF.dropna()
workingDF = workingDF.reset_index(drop=True)
return workingDF    
a = pd.DataFrame({'a':[1,2], 'b':[3,4]})
print('a - original:')
print(a)
b = testFunc3(a)
print('b after testFunc3():')
print(b)
print('a after testFunc3():')
print(a)

这给出了以下输出:

a - original:
   a  b
0  1  3
1  2  4
b after testFunc3():
   a    b
0  1  3.0
a after testFunc3():
   a    b
0  1  3.0
1  2  NaN

最佳答案

如果您不想修改函数内的方法,可以将数据帧的副本发送到函数:

b = testFunc3(a.copy())

关于python - 数据帧参数被函数更改。如何避免其变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61514678/

相关文章:

python-3.x - 在 Python 中规范化嵌套列表时出错

python - 检查 Linux 系统上 python 多处理中的 fork 行为

python - 使用 `With` 标签反转 Django 模板中的 bool 值?

python - 从嵌入式 Python 脚本导入模块

python - 在 Flask g 中存储 Postgres 连接

python - 如果满足条件,pandas 将值从一列复制到另一列

python - 如何将随机森林分类器应用于所有数据集,在 python 中一次一小部分

python - 仅使用相关列取消堆叠数据框

python - Pandas - 通过插值填充缺失的经纬度坐标

Python 字典到数据帧 - DataFrame 构造函数未正确调用