Pandas递归计算绝对值

2024-04-27 04:38:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框(在本文中称为data),在一列中有正值和负值。我做了以下工作:

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'])

Tags: theto数据indataframedatavaluecol
1条回答
网友
1楼 · 发布于 2024-04-27 04:38:09

由于已将两个数据帧设置为彼此相等,因此对其中一个数据帧的更改将影响另一个数据帧

正如@Psidom所指出的,data_abs = data.copy()不会有这个问题,正如documentation中所概述的,.copy就是要这样做的

例如,如果我们有一个数据帧:

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

但如果我们改为使用。复制:

data_abs = data.copy()
data_abs['Col'] = data_abs['Col'].abs()

原始数据帧保持不变:

>>> data
   Col  Col2
0   -1     1
1   -5     2
2    6     2
3    8     2

相关问题 更多 >