pandas使用索引

时间:2017-09-18 15:11:58

标签: python sqlite pandas sqlalchemy

我正在尝试使用pandas创建一个sqlite数据库。

我可以使用以下方式保存数据:

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]: []   

现在我有两个问题:

1)为什么列First不会显示insp.get_indexes('flows')

2)如何将1个或多个索引添加到我创建的数据库中。

编辑:

这是数据框的结构

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              

1 个答案:

答案 0 :(得分:0)

您没有显示数据框的结构,因此很难回答您的问题。但是,根据您的意见,我可以做出一些推论。

将数据库保存到sql时,设置index=False。这意味着数据框上的任何索引都不会保存为数据库中的列。然后,继续指定一个索引标签,如果将index设置为False,则该标签不会产生任何影响。如果要重命名现有索引名称,则使用此参数。

  

index:布尔值,默认为True       将DataFrame索引写为列。

     

index_label:字符串或序列,默认为None       索引列的列标签。如果给出无(默认)和       index为True,然后使用索引名称。       如果DataFrame使用MultiIndex,则应该给出一个序列。

必须通过数据库创建数据库索引,而不是pandas。