Python Pandas 用相反的符号替换值

标签 python pandas data-processing

我正在尝试“清理”一些数据。我的值(value)观是负面的,但它们不可能是。我想将所有负值替换为其对应的正值。

A    | B     | C
-1.9 | -0.2  | 'Hello'
1.2  | 0.3   | 'World'

我想变成这样

A    | B     | C
1.9  | 0.2   | 'Hello'
1.2  | 0.3   | 'World'

到目前为止,我刚刚开始编写替换语句

df.replace(df.loc[(df['A'] < 0) & (df['B'] < 0)],df * -1,inplace=True)

请在正确的方向帮助我

最佳答案

只需调用 abs :

In [349]:

df = df.abs()
df
Out[349]:
     A    B
0  1.9  0.2
1  1.2  0.3

另一种方法是创建一个 bool 掩码,删除 NaN 行,在索引上调用 loc 并分配负值:

df.loc[df[df<0].dropna().index] = -df

编辑

对于你有字符串的情况,以下是可行的:

In [399]:

df[df.columns[df.dtypes != np.object]] = df[df.columns[df.dtypes != np.object]].abs()
df
Out[399]:
     A    B      C
0  1.9  0.2  Hello
1  1.2  0.3  World

关于Python Pandas 用相反的符号替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299597/

相关文章:

python - 为什么 Python 允许比较可调用对象和数字?

python - 如何为条形图添加组标签

python - 用连续的数字填充不连续的缺失

python - 创建一个以数据帧为参数并返回最小值和最大值的函数

python - 以对数刻度绘制 x 和 y 轴

python - 有没有办法使用 python 附加具有相同列名的列的值?

python - 使用 python 处理每个用户的一行数据

java - 简单的基于 java 的工作流管理器/数据工作流,能够启动分机。应用程序,调用网络服务等

python - 表单背后的逻辑(request.POST 或 None)

python - 获取嵌套列表中特定索引的不同值