Python 具有特定值的舍入数据框列(如果存在)
Python Round Dataframe Columns with Specific Value If Exists
我的输入数据框;
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
问题是如果没有 "rounding" 变量,默认情况下应该自动 运行 (0.5)。
我需要一个可以 运行 的代码。像这样或不同的东西;
if rounding==rounding:
df['A']=round(df['A'] - rounding + 0.5)
else:
df['A']=round(df['A'])
我看到很多关于特定值舍入的主题,但我看不到这个。
你能帮我解决这个问题吗?
一旦你的 dataframe
中有一个列,每个观察值都有 "rounding"(你应该通过合并来自另一个 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
或另一个标量 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
我的输入数据框;
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
问题是如果没有 "rounding" 变量,默认情况下应该自动 运行 (0.5)。 我需要一个可以 运行 的代码。像这样或不同的东西;
if rounding==rounding:
df['A']=round(df['A'] - rounding + 0.5)
else:
df['A']=round(df['A'])
我看到很多关于特定值舍入的主题,但我看不到这个。
你能帮我解决这个问题吗?
一旦你的 dataframe
中有一个列,每个观察值都有 "rounding"(你应该通过合并来自另一个 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
或另一个标量 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