Найти - Пользователи
Полная версия: Не могу сравнить даные из DataFrame со строкой
Начало » Python для новичков » Не могу сравнить даные из DataFrame со строкой
1
ksandr13
Здравствуйте.
Пытаюсь получить из DataFrame значение и сравнить со строкой. Делаю так:
 import pandas as pd
df = pd.DataFrame({
     'country': ['Kazakhstan', 'Russia', 'Belarus', 'Ukraine'],
     'population': [17.04, 143.5, 9.5, 45.5],
     'square': [2724902, 17125191, 207600, 603628]
 })
 
t = df.population[df.country ==  'Russia']
if t == 143.5:
    print(t)
Строчка с условием написана с ошибкой, как написать правильно я не знаю и найти в инете не получается.
В данном случае получился DataFrame t с одним значением, и вот его надо преобразовать( в строку или число)
Подскажите как это сделать.
_visor_
t = float(df.population) может так?
_visor_
в скобках выражение полностью написать
ksandr13
Вот так получилось
 if t.item() == '143.5':
ну и значения population переделал в текстовые
FishHook
Не могу не напомнить, что числа с плавающей точкой нужно очень осторожно сравнивать на эквивалентность, потому что они всегда хранятся с некоторой точностью
scidam
FishHook
Не могу не напомнить, что числа с плавающей точкой нужно очень осторожно сравнивать на эквивалентность, потому что они всегда хранятся с некоторой точностью

К этому можно добавить, что Pandas импортирует numpy as np, у которого в свою очередь есть функция для такого сравнения

 >>> x=pd.DataFrame([1,2,3])
>>> x
   0
0  1
1  2
2  3
>>> pd.np.isclose
<function isclose at 0x7f39497c8400>
>>> pd.np.isclose(2,3)
False
>>> pd.np.isclose(2,2.000000000000001)
True
>>> y=pd.DataFrame([1,2.00000000000001, 3])
>>> pd.np.isclose(x, y)
array([[ True],
       [ True],
       [ True]], dtype=bool)

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB