如何检查列中数值的符号,如果为负数,则删除符号,如果出现这种情况,则创建另一列?

2024-06-25 23:22:58 发布

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

Python 3.8,使用Pandas

我试图从pandas数据框列“data”中的负数中删除符号,只保留大小,即所有值均为正值。本质上,将一列中的值乘以-1,但仅当值为负数时。这是容易的一点。然后在数据帧中创建一条记录,说明它已反转。因此,在本例中,创建另一个名为“Tubes Inversed”的列

 #Check sign and create a column recording if this has been inverted. 
            num = df['DATA']._get_numeric_data()
            if num < 0:
                df['Tubes Inverted'] = "Yes"
            else:
                df['Tubes Inverted'] = "No"
            num[num < 0] = num*-1

这里的问题是,我试图确定一个数列的真值,它是模糊的,无法工作,因此我尝试:

            num = df['DATA']._get_numeric_data()
            for i in num:
                if i < 0:
                    df['Tubes Inverted'] = "Yes"
                else:
                    df['Tubes Inverted'] = "No"
            num[num < 0] = num*-1

但我认为这只是它正在测试的数据的索引位置,而不是数据本身

必须有一个更优雅的&;pythonic解决方案


Tags: 数据nopandasdfdatagetifelse
1条回答
网友
1楼 · 发布于 2024-06-25 23:22:58

这里有2个要求,这里也不需要循环:

首先,在检查条件后,使用np.where创建一个条件列:

df['Tubes Inverted'] = np.where(df['DATA']<0,"Yes","No")

然后使用series.abs()可以将DATA列转换为绝对值

df['DATA'] = df['DATA'].abs()

相关问题 更多 >