gpt4 book ai didi

python - 使用 pandas 重新分配项目会给出错误的结果

转载 作者:行者123 更新时间:2023-12-01 07:21:25 25 4
gpt4 key购买 nike

我正在修改“x”列的值,从而产生不同的数据帧,如此处所示。我发现重新分配会导致荒谬的值,而所有四个数据帧都应该相同。

代码如下,

import pandas as pd

def modifyspec(df,i,val=0.25):
df['x'][(df['z']>=9) & (df['z']<=19)] = (df['x'][(df['z']>=9) & (df['z']<=19)] - (val))/(val)
df.to_csv('{}file.csv'.format(i),sep='\t',index=False)
return


x=[1.1,1.2345,3.3456,4.4442,5.555,6.21234,7.3434]
y=[2.23,2.456,6.8899,9.222,10.999,13.1111,15.44545]
z=[5.44,6.99,8.99,11.33,13.33,19.002,28.445]
dfx=pd.DataFrame({'x': x,'y': y,'z':z})


for i in range(4):
modifyspec(dfx,i,0.25)

我不明白这种行为,有人可以指出如何在所有四个文件中产生相同的结果(使用 for 循环生成)。

最佳答案

听起来你的问题是由于你的函数改变了 df ,它是对函数范围之外的 DataFrame 的引用。要解决此问题,请在函数内部创建一个副本并更改该副本:

def modifyspec(df, prefix, val=0.25):
df = df.copy()
row_idx = (df['z'] >= 9) & (df['z'] <= 19)
df.loc['x', row_idx] = (df.loc['x', row_idx] - val) / val
df.to_csv(f'{prefix}file.csv', sep='\t', index=False)

关于python - 使用 pandas 重新分配项目会给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com