如果存在,则具有特定值的Python圆形数据框列

时间:2019-10-24 10:51:19

标签: python pandas dataframe rounding

我的输入数据框;

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

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

您能帮我吗?

2 个答案:

答案 0 :(得分:1)

一旦您在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)

答案 1 :(得分:1)

我相信您认为缺少值-然后将其替换为0或带有if-else语句的另一个标量:

rounding = np.nan

rounding = 0 if rounding != rounding else rounding
print (rounding)
0

或者:

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

如果存在值(不丢失值):

rounding = 0.25

rounding = 0 if rounding != rounding else rounding
print (rounding)
0.25

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