Python 除新列外,所有列均向上舍入

Python 除新列外,所有列均向上舍入,python,pandas,dataframe,Python,Pandas,Dataframe,我想将此列添加到已存在的数据帧中 df['THRESHOLD'] = df['AVG_CNT'] * 3 cols = ['AVG_CNT', 'STD_DEV', 'THRESHOLD'] df[cols] = df[cols].round(1) print (df) 我想将这些列四舍五入为一个有效数字。除新的df['THRESHOLD']列外,所有列都将四舍五入。为什么会这样 df.info()的结果 INT64索引:16个条目,从0到15 数据列(共4列): 平均值16非空浮点64 I

我想将此列添加到已存在的数据帧中

df['THRESHOLD'] = df['AVG_CNT'] * 3
cols = ['AVG_CNT', 'STD_DEV', 'THRESHOLD']
df[cols] = df[cols].round(1)
print (df)
我想将这些列四舍五入为一个有效数字。除新的
df['THRESHOLD']
列外,所有列都将四舍五入。为什么会这样

df.info()的结果


INT64索引:16个条目,从0到15
数据列(共4列):
平均值16非空浮点64
ID 16非空int64
STD_DEV 16非空浮点64
阈值16非空浮点64
数据类型:float64(3)、int64(1)
内存使用:640.0字节
没有一个

您可以使用
round
来执行此操作

你可以用几种方法来做

df = df.round({'AVG_CNT': 1, 'STD_DEV': 1, 'THRESHOLD': 1})
或者像你那样:

cols = ['AVG_CNT', 'STD_DEV', 'THRESHOLD']
df[cols] = df[cols].round(1)

或者使用
apply
Series.round

df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']] = df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']].apply(lambda x: pd.Series.round(x, 1))


你能分享
df.info()
?@RichieV我刚刚添加了它。你有没有做一个df.head()来看看它是否四舍五入。我看你的头发没有毛病code@JoeFerndz啊。。。奇怪的是,当我使用
df.head
时,它会四舍五入,但当我尝试使用
df
打印所有内容时,它不会四舍五入。如果你只想显示一个小数,你可以这样做
pd.options.display.precision=1
,你的所有显示都是一位数
df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']] = df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']].round(1)
df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']] = df[['AVG_CNT', 'STD_DEV', 'THRESHOLD']].apply(lambda x: pd.Series.round(x, 1))
df[cols] = df[cols].apply(lambda x: pd.Series.round(x, 1))