私はpandasでsqliteデータベースを作成しようとしています。pandasはインデックス付きデータベースを作成します
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine(path, echo=False)
df_flows.to_sql('flows', engine, if_exists='append', index=False, index_label='First')
と私は
df = pd.read_sql("SELECT * FROM flows WHERE First>1504101810 AND First<1504105409", engine)
データがディスク上にあるが、私は、インデックスのように正常に動作していないと思うし、それを読み取ることができます:私は、データを保存することができています
:
:In [22]: from sqlalchemy.engine import reflection
In [23]: insp = reflection.Inspector.from_engine(engine)
In [24]: insp.get_indexes('flows')
Out[24]: []
は今、私は2つの質問を持っています
1)なぜ列First
はinsp.get_indexes('flows')
2と表示されません)どのように私は、私が作成したデータベースへの1つのまたは複数のインデックスを追加することができます。
EDIT:
これはあなたがあなたのデータフレームの構造を示していないので、あなたの質問に答えることは困難であるデータフレーム
In [25]: df_flows.dtypes
Out[25]:
Protocol object
Src object
SrcPort float64
Dst object
DstPort float64
Group ID int64
Port object
VPort int64
IP TOS object
VLAN ID float64
VLAN Pri float64
MPLS Exp float64
Application object
Packets int64
Messages int64
Bytes int64
First int64
Last int64
SrcSubnet object
DstSubnet object
dtype: object
'index_label'が' None'でなければ、indexはTrueに設定されなければならず、自動的に指定された列名に置き換えられると言っていますか? – Donbeo
いいえ、 'index = False'の場合、' index_label'は無視されます。 'index = True'(デフォルト値)の場合、その名前を使ってインデックスをカラムとして書き出します。しかし、 'index_label'パラメータを使って別の名前を使うこともできます。 – Alexander
okしかし、複数の列でインデックスを作成する場合、後でインデックスを追加したいのですが? – Donbeo