微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas Dataframe - 如何检查列中数值的符号,如果为负,则删除符号并在发生这种情况时创建另一列?

如何解决Pandas Dataframe - 如何检查列中数值的符号,如果为负,则删除符号并在发生这种情况时创建另一列?

Python 3.8,使用 Pandas。

我正在尝试从 Pandas 数据框列“DATA”中的负数中删除符号以仅保留大小,即所有值都是正数。本质上,将一列中的值乘以 -1,但仅限于负数。这是容易的一点。然后在已反转的数据框中创建一个记录。所以在这个例子中创建另一个名为“Tubes Inverted”的列

 #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 的解决方案!

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?