python - Pandas Dataframe - 如何检查列中数值的符号,如果为负则删除符号并在发生这种情况时创建另一列?
问题描述
Python 3.8,使用熊猫。
我正在尝试从熊猫数据框列“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的解决方案!
解决方案
你在这里有两个要求,你也不需要循环:
np.where
首先,在检查条件后使用创建一个条件列:
df['Tubes Inverted'] = np.where(df['DATA']<0,"Yes","No")
然后使用series.abs()
您可以转换为列的绝对值DATA
。
df['DATA'] = df['DATA'].abs()
推荐阅读
- python - 通过增加一个整数来增加符号的数量(python)
- javascript - React 404 Axios 无法发布
- typescript-compiler-api - TypeScript Compiler API:获取泛型方法的已解析返回类型
- node.js - Azure SignalR 服务上游未将消息传递到 Azure 函数应用
- c# - 如何以二进制流的形式读取 PDF 文件并将其传递给 Graph API 的请求体?
- node.js - Material-UI AutoComlete only load values on second click
- javascript - 单击按钮时重定向在实时站点上不起作用
- r - 在 Quanteda 中根据除正/负以外的字典对文本进行评分?
- jquery - 进度条来回转动问题
- python-3.x - tensorflow_hub 在谷歌应用引擎上不起作用