有三个问题(加载数据库,循环和追加系列)

时间:2017-07-24 08:57:45

标签: pandas

与我开始时不同,我发现这个问题比我想象的更难。

我想引用SQLite数据库中的特定列内容,将其转换为系列,然后将其组合到单个数据框中。

我试过这样但是发誓:

import pandas as pd
from pandas import Series, DataFrame
import sqlite3
con = sqlite3.connect("C:/Users/Kun/Documents/Dashin/data.db") #my sqldb
tmplist = ['A003060','A003070'] #db contains that table,I decided to call 
                                   #only two for practice.

for i in tmplist:
    tmpSeries =pd.Series([]) 
    listSeries = pd.read_sql("SELECT * FROM %s " %(i), con , index_col = 
    None)['Close'].head(5)
    tmpSeries2 = tmpSeries.append(listSeries)

    print(tmpSeries2)

代码结果只显示这样的虚拟事物:

0    7150.0
1    6770.0
2    7450.0
3    7240.0
4    6710.0
dtype: float64
0    14950.0
1    15500.0
2    15000.0
3    14800.0
4    14500.0

我想做的是这样的:

   A003060    A003070
0    7150.0   14950.0
1    6770.0   15500.0
2    7450.0   15000.0
3    7240.0   14800.0
4    6710.0   14500.0

我前面有一个类似的问题并得到答案。但最后一个问题是 使用预定义变量。但我必须使用循环因为我必须处理一系列大型数据库。我已经尝试使用dataframe.append,transpose()进行了另一项工作。但我失败了。

我会很感激一些小提示。谢谢。

To append pandas series using for loop

1 个答案:

答案 0 :(得分:1)

我认为您可以创建list,然后附加数据并上次使用concat

dfs = []
for i in tmplist:
    tmpSeries =pd.Series([]) 
    listSeries = pd.read_sql("SELECT * FROM %s " %(i) con,index_col = None)['Close'].head(5)
    dfs.append(listSeries)

df = pd.concat(dfs, axis=1, keys=tmplist)
print(df)