2016-04-20 11 views
1

ich ausführen AnweisungPython Pandas bekommen max Wert von mysql

sequence = pd.read_sql_query('SELECT MAX(_SequenceNumber) AS sequence_number FROM betting.betting', database) 

erhalten Datenrahmen

sequence_number 
0    4495 

Ich kann nicht herausfinden, wie nur 4495 zu bekommen war ich so etwas wie

sequence = dataframe.iloc[0] 
versuchen

Gibt mir immer noch

sequence = 4495 

Können Sie mir bitte helfen?

+0

Sie meinen, Sie wollen den Datenrahmen ohne den Index und die Spaltenüberschrift? Oder wollen Sie nur das int-Wert-Ergebnis? –

Antwort

1

Ich glaube, Sie at oder iat für fast scalar value getting verwenden:

print dataframe.at[0, 'sequence_number'] 
4495 

print dataframe.sequence_number.iat[0] 
4495 

print type(dataframe.at[0, 'sequence_number']) 
<type 'numpy.int64'> 

print type(dataframe.sequence_number.iat[0]) 
<type 'numpy.int64'> 
0

read_sql_query einen Datenrahmen zurück. Wie von @jezrael vorgeschlagen, ist iat die beste Methode für den Zugriff auf einen Skalar in einem Datenrahmen.

Wenn Sie jedoch SQLAlchemy verwenden, gibt es auch eine scalar-Funktion, die das erste Element des ersten Ergebnisses zurückgibt, None, wenn kein Ergebnis vorliegt, oder einen Fehler, wenn mehr als ein Ergebnis vorliegt.

from sqlalchemy import create_engine, Table, MetaData, func 
from sqlalchemy.orm import sessionmaker 

# Connection set-up. 
engine = create_engine(...) 
Session = sessionmaker(bind=engine) 
session = Session() 
metadata = MetaData() 

my_table = Table('betting.betting', metadata, autoload=True, autoload_with=engine) 

# Query scalar. 
>>> session.query(func.max(my_table.c._SequenceNumber)).scalar() 
52