Python - Применение условия после десятичной точки (в столбце фрейма данных)
У меня есть кадр данных, который содержит столбец, как показано ниже,
total_hours
8.31,
5.15,
10.53,
8.69,
10.57,
10.53
14.25,
10.55,
0.0,
10.73,
8.54,
10.55,
0.0,
10.53,
10.52,
10.54
Мне нужно применить условие после десятичной точки, Эти условия следующие, ( (<50) оно заменит .0), и (>50) оно заменит .5)). Как я могу сделать это правильно???? Заранее спасибо, ....
Попробуйте это:
total_hours = [8.31, 5.15, 10.53, 8.69, 10.57, 10.53, 14.25, 10.55, 0.0, 10.73, 8.54, 10.55, 0.0, 10.53, 10.52, 10.54]
new_hours = []
for number in total_hours:
cal = number - int(number)
if cal < 0.5:
sum = 0
else:
sum = 0.5
out = float(int(number) + sum)
new_hours.append(out)
print(new_hours)
>>[8.0, 5.0, 10.5, 8.5, 10.5, 10.5, 14.0, 10.5, 0.0, 10.5, 8.5, 10.5, 0.0, 10.5, 10.5, 10.5]
Просто реализуйте собственные критерии округления в функции и примените функцию к требуемому столбцу:
def customRound(val):
fraction = val-int(val)
return int(val)+0.5 if fraction>=0.5 else int(val)
df['total_hours']=df['total_hours'].apply(customRound)
ВЫВОД:
total_hours
0 8.0
1 5.0
2 10.5
3 8.5
4 10.5
5 10.5
6 14.0
7 10.5
8 0.0
9 10.5
10 8.5
11 10.5
12 0.0
13 10.5
14 10.5
15 10.5