猿问

数据框参数被函数更改。如何避免它被变异?

我知道熊猫数据框是可变的。


我将一个数据框传递给一个函数,我不希望更改原始数据框,但确实如此。我想只要我重新分配数据框变量并避免使用 .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


慕容森
浏览 77回答 1
1回答

杨魅力

如果您不想修改更改函数内部的方法,可以将数据帧的副本发送到函数:b = testFunc3(a.copy())
随时随地看视频慕课网APP

相关分类

Python
我要回答