Возьмем это число в качестве примера:
1.64847910404205
Если я создаю Pandas DataFrame со строкой и этим значением:
df = pd.DataFrame([{'id': 77, 'data': 1.64847910404205}])
, а затем перебираю строки (хорошо.... 'row') и осмотрите:
for index, row in df.iterrows():
if index > 0:
previous_row = df.iloc[index]
Конечно, вышесказанное странно: зачем мне итерировать по строкам, просто чтобы извлечь ту же строку из DF?Забудь про это;Я удалил -1
для иллюстрации.
Теперь, если я использую SciView
(часть IntelliJ
) и вкладку data
для индивидуальной проверки строк, я получаю это:
row
data: 1.64847910404205
previous_row
data: 1.64847910404
Обратите внимание, что previous_row
было округлено.Это потому, что они по каким-то причинам являются разными типами данных ...
row:
type(row) #float64
previous_row:
type(previous_row) #numpy.float64
Мне интересно знать: почему iloc
преобразуется в numpy.float64
и как я могу предотвратить это?
Мне нужен тот же уровень точности, что и позже, когда я буду выполнять расчеты отношения пикового сигнала к шуму (PSNR).Конечно, я мог бы просто преобразовать float
в numpy.float64
, но я не хочу терять точность.