python - 如何使用 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"
所以我知道如何正确地更新条目,但我不知道如何用相反的符号更新值。
解决方案
查看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'])
推荐阅读
- c - 有效地将数据存储在数组中
- android-studio - 我的 Android Studio 项目的 Gradle 同步失败:任务执行失败
- vbscript - 拖动到 .vbs 时删除文件夹和子文件夹中的每个 .txt 文件
- python - 疑惑tornado的协程
- java - 从 Oracle 数据库执行外部方法
- robotframework - 在机器人框架中传递命令行参数时出错
- r - R中插入符号序列中的SVM重复名称错误
- python - BeautifulSoup 网页有保护和 prettify() 不返回数据
- java - 如何将 netcdf 变量初始化为全局变量以避免 java.lang.NullPointerException?
- angular - Angular 6 通用,.net 模板,由于 uglifyjs-webpack-plugin 无法发布