首页 > 解决方案 > 如何使用 Python Pandas 将所有值的符号替换为相反的符号

问题描述

请在将我指向此线程之前阅读:Python Pandas 用相反的符号替换值

我有以下数据框:

A      | B
"1.9"  | "S"
"1.2"  | "H"
"1.9"  | "S"

对于 B 为“S”的所有行,我想将 A 列中的值替换为符号相反的值,因此结果如下:

A       | B
"-1.9"  | "S"
"1.2"   | "H"
"-1.9"  | "S"

不幸的是,所有值都是字符串。

我在设置正确的查询和用其他东西更新匹配值方面没有问题:

data.loc[(data["B"]) == 'S', data.columns[1]] = 999

这将导致以下结果:

A       | B
"999"   | "S"
"1.2"   | "H"
"999"   | "S"

所以我知道如何正确地更新条目,但我不知道如何用相反的符号更新值。

标签: pythonpandas

解决方案


查看np.where

df['A']=np.where(df['B']=='S', '-'+df['A'], df['A'])

由 SpghttCd 推荐

df['A']=np.where((df['B']=='S')&(~df.a.str.startswith('-')), '-'+df['A'], df['A'])

推荐阅读