除新列外,所有列均四舍五入

时间:2020-10-14 01:50:57

标签: 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()的结果

<class 'pandas.core.frame.DataFrame'>
Int64Index: 16 entries, 0 to 15
Data columns (total 4 columns):
AVG_CNT      16 non-null float64
ID           16 non-null int64
STD_DEV      16 non-null float64
THRESHOLD    16 non-null float64
dtypes: float64(3), int64(1)
memory usage: 640.0 bytes
None

1 个答案:

答案 0 :(得分:1)

您可以使用round进行此操作。

您可以通过几种方式来实现。

df = df.round({'AVG_CNT': 1, 'STD_DEV': 1, 'THRESHOLD': 1})

或像您一样:

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

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

或使用applySeries.round

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))