.astype(int)
вернет целое число, исходя из того, что вам нужно, вы должны использовать .astype(float)
.round(2)
округляет значения до 2 десятичных знаков, но я бы посоветовал округлить до 2 десятичных после того, как вы получили среднее значение. Обратите внимание, что панды будут отображать до 6 знаков после запятой при выводе на печать. Однако будьте уверены, что при вызове значения указанная вами точность будет достигнута.
>>> df = pd.DataFrame([[1,2],[3,4]], columns=['a','b'])
>>> df['c'] = df['a'].div(7).astype(float)
>>> df['d'] = df['a'].div(7).astype(float).round(2)
>>> df['e'] = df['a'].div(7).astype(float).round(7) # only 6 d.p. displayed
>>> df['f'] = df['a'].div(7).astype(float).round(10) # only 6 d.p. displayed (uh-oh!)
Но когда вы «вызовите» значения, вы увидите указанную точность:
>>> df['d'][0]
0.1428571
>>> df['e'][0]
0.1428571429