Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 11, 2017 08:49:35

ksandr13
Зарегистрирован: 2017-09-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

Здравствуйте.
Пытаюсь получить из 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 с одним значением, и вот его надо преобразовать( в строку или число)
Подскажите как это сделать.

Офлайн

#2 Сен. 11, 2017 09:42:27

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

Офлайн

#3 Сен. 11, 2017 09:46:12

_visor_
Зарегистрирован: 2013-04-11
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

t = float(df.population) может так?

Офлайн

#4 Сен. 11, 2017 09:47:45

_visor_
Зарегистрирован: 2013-04-11
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

в скобках выражение полностью написать

Офлайн

#5 Сен. 11, 2017 09:53:39

ksandr13
Зарегистрирован: 2017-09-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

Вот так получилось

 if t.item() == '143.5':
ну и значения population переделал в текстовые

Офлайн

#6 Сен. 11, 2017 10:25:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

Не могу не напомнить, что числа с плавающей точкой нужно очень осторожно сравнивать на эквивалентность, потому что они всегда хранятся с некоторой точностью



Офлайн

#7 Сен. 12, 2017 05:39:12

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Не могу сравнить даные из DataFrame со строкой

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version