在Python中对列进行绝对值处理

48

我该如何将列“count”的值转换为绝对值?

我的数据框架概述如下:

               datetime       count
0   2011-01-20 00:00:00   14.565996
1   2011-01-20 01:00:00   10.204177
2   2011-01-20 02:00:00   -1.261569
3   2011-01-20 03:00:00    1.938322
4   2011-01-20 04:00:00    1.938322
5   2011-01-20 05:00:00   -5.963259
6   2011-01-20 06:00:00   73.711525
2个回答

99

使用pandas.DataFrame.abs()函数。

import pandas as pd

df = pd.DataFrame(data={'count':[1, -1, 2, -2, 3, -3]})

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

print(df)
   count
#0      1
#1      1
#2      2
#3      2
#4      3
#5      3

如果我想将日期时间保留为第一列,该怎么办? - Mwspencer
4
@Mwspencer 只需创建一个新列:df['abs'] = df['count'].abs() - Tiffany G. Wilson
获取 SettingWithCopyWarning - cpage

0

你也可以在多列上调用abs()

df[['col1', 'col2']] = df[['col1', 'col2']].abs()

如果在将列值转换为绝对值时出现SettingWithCopyWarning,请先复制一份以消除此警告。

df = df.copy()
df['count'] = df['count'].abs()

或使用assign()来制作一份副本。

df = df.assign(count=df['count'].abs())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接