与我开始时不同,我发现这个问题比我想象的更难。
我想引用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()进行了另一项工作。但我失败了。
我会很感激一些小提示。谢谢。
答案 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)