gpt4 book ai didi

python - Pandas 递归计算绝对值

转载 作者:行者123 更新时间:2023-12-04 12:21:46 24 4
gpt4 key购买 nike

我有一个数据框(在这篇文章中称为数据),一列中有正值和负值。我执行以下操作:

data.Col.min() --> results in a negative value
data_abs = data
data_abs['Col'] = data_abs['Col'].abs()
data.Col.min() --> results to the lowest absolute value in the dataframe
在我看来,我已经将绝对值存储在自己的变量中,所以我想知道为什么将值转换为绝对值的代码行递归地更改我的源变量。
尝试通过以下方式转换值时,我也得到相同的结果:
data_abs['Col'] = abs(data_abs['Col'])

最佳答案

由于您已将两个 DataFrame 设置为彼此相等,因此对其中一个 DataFrame 的更改将影响另一个。
正如@Psidom 指出的那样,data_abs = data.copy()不会有这个问题,这就是 .copy 的目的,如 documentation 中所述。
例如,如果我们有一个 DataFrame:

data = pd.DataFrame({'Col':[-1,-5,6,8],'Col2':[1,2,2,2]})
然后:
data_abs = data
data_abs['Col'] = data_abs['Col'].abs()
...将改变两个数据帧:
>>> data
Col Col2
0 1 1
1 5 2
2 6 2
3 8 2

>>> data_abs
Col Col2
0 1 1
1 5 2
2 6 2
3 8 2
但如果我们改为使用 .copy:
data_abs = data.copy()
data_abs['Col'] = data_abs['Col'].abs()
原始 DataFrame 保持不变:
>>> data
Col Col2
0 -1 1
1 -5 2
2 6 2
3 8 2

关于python - Pandas 递归计算绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68626351/

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