Używając Pythona 3.8.0, ten kod

p = get_quote_yahoo("AUPH")
print(p) 

Daje wynik:

"language region quoteType  ...     market esgPopulated   price
AUPH    en-US     US    EQUITY  ...  us_market        False  19.825
[1 rows x 60 columns]"

I ten kod:

print(p.price)

Daje:

"AUPH    19.8893
 Name: price, dtype: float64"

Jak uzyskać dostęp tylko do liczby zmiennoprzecinkowej (19.8893) w p, tak aby była drukowana tylko liczba?

-1
Jerry Emery Delacruz 17 grudzień 2019, 22:23
1
Nie jest jasne, czym jest p lub p.price. Co to jest get_quote_yahoo?
 – 
chepner
17 grudzień 2019, 22:27
To zależy od typu p, tj. jaki typ obiektu zwraca get_quote_yahoo()?
 – 
John Gordon
17 grudzień 2019, 22:27
Czy to jest ramka danych? Czy możesz podać, w jaki sposób stworzyłeś tę strukturę danych?
 – 
C.Nivs
17 grudzień 2019, 22:29
Oto cały program: from pandas_datareader import get_quote_yahoo p = get_quote_yahoo("AUPH") print(p.price)
 – 
Jerry Emery Delacruz
17 grudzień 2019, 22:38

3 odpowiedzi

Spróbuj tego:

print(p.price.values[0])
0
Anatoliy R 17 grudzień 2019, 22:30
Najbardziej podoba mi się ta odpowiedź, nie wywołuje innych funkcji, tylko umieszcza wskaźnik we właściwej pozycji w obiekcie. Dzięki.
 – 
Jerry Emery Delacruz
17 grudzień 2019, 22:44

Załóżmy, że masz ten ciąg:

m = """AUPH    19.8893
    Name: price, dtype: float64"""

Jeśli użyjesz metody split, będziesz mieć:

>>> m.split()
['AUPH', '19.8893', 'Name:', 'price,', 'dtype:', 'float64']
>>> m.split()[1]
'19.8893'
>>> float(m.split()[1])
19.8893

Tak więc w Twoim przypadku możesz uzyskać numer, wykonując:

m = p.price
result = float(m.split()[1])
print(result) # will display 19.8893
0
codrelphi 17 grudzień 2019, 22:34
Ale spójrz, jak czysta jest powyższa odpowiedź Anatoliego.
 – 
Jerry Emery Delacruz
17 grudzień 2019, 22:45

Ponieważ p.price jest obiektem serii, możesz użyj wszystkich dostępnych metod.

To jest właściwy sposób na uzyskanie wartości

import pandas_datareader as pdr

p = pdr.get_quote_yahoo('AUPH')

print(next(iter(p.price)))

Lub

import pandas_datareader as pdr

p = pdr.get_quote_yahoo('AUPH')

print(p.price.get(0))

Lub

import pandas_datareader as pdr

p = pdr.get_quote_yahoo('AUPH')

print(p.price[0])

Wyjścia

# > python test.py
20.01
0
Alexandr Shurigin 17 grudzień 2019, 22:38
Ostatni z indeksem jest najczystszy i ten, o którym podejrzewałem, musiał istnieć. Nowy w Pythonie, jestem starym programistą C, C+.
 – 
Jerry Emery Delacruz
17 grudzień 2019, 22:55
1
Tak, indeks jest najlepszy, w jaki wierzę. To Series jest kontenerem na listy wartości, dzięki czemu obsługuje wiele interfejsów API w celu uzyskania dostępu do podstawowych danych kontenera.
 – 
Alexandr Shurigin
17 grudzień 2019, 22:57