具有特定值的Python舍入数据框列

问题描述 投票:0回答:2

我的输入数据框;

A       B 
0.3     0.6
0.4     3.05
1.6     4.35
0.15    5.47
4.19    9.99

如果存在,我想根据指定的值舍入我的数据框列。我的代码如下:

rounding=0.25

df['A']=round(df['A'] - rounding + 0.5)
df['B']=round(df['B'] - rounding + 0.5)

输出是;

A    B
1    1
1    3
2    5
0    6
4    10

问题是,如果没有“取整”变量,则应将其默认自动运行(0.5)。我需要一个可以同时运行的代码。类似或不同的东西;

if rounding==rounding:
    df['A']=round(df['A'] - rounding + 0.5)

else:
    df['A']=round(df['A'])

[我看到了许多有关具有特定值的取整的主题,但我看不到。

您能帮我吗?

python pandas dataframe rounding
2个回答
0
投票

一旦您在dataframe中有一个带有每个取整的四舍五入的列(您应该通过合并来自另一个dataframe的数据来实现此列),只需执行以下操作:

df['A'] = (df['A'] - df['rounding'].fillna(0.5) + 0.5).round(0)
df['B'] = (df['B'] - df['rounding'].fillna(0.5) + 0.5).round(0)

0
投票

我相信您认为缺少值:

rounding = np.nan

rounding = 0 if rounding != rounding else 0.25

或:

rounding = 0 if pd.isna(rounding) else 0.25

print (rounding)
0

df['A']=round(df['A'] - rounding + 0.5)
df['B']=round(df['B'] - rounding + 0.5)
print (df)
     A     B
0  1.0   1.0
1  1.0   4.0
2  2.0   5.0
3  1.0   6.0
4  5.0  10.0
© www.soinside.com 2019 - 2024. All rights reserved.