Форум сайта python.su
0
Здравствуйте.
Пытаюсь получить из 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)
Офлайн
9
Офлайн
0
t = float(df.population) может так?
Офлайн
0
в скобках выражение полностью написать
Офлайн
0
Вот так получилось
if t.item() == '143.5':
Офлайн
568
Не могу не напомнить, что числа с плавающей точкой нужно очень осторожно сравнивать на эквивалентность, потому что они всегда хранятся с некоторой точностью
Офлайн
35
FishHook
Не могу не напомнить, что числа с плавающей точкой нужно очень осторожно сравнивать на эквивалентность, потому что они всегда хранятся с некоторой точностью
>>> 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)
Офлайн