Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,从具有行和列ID的SQL重新组合表_Python_Sqlite_Python 2.7_Pandas - Fatal编程技术网

在Python中,从具有行和列ID的SQL重新组合表

在Python中,从具有行和列ID的SQL重新组合表,python,sqlite,python-2.7,pandas,Python,Sqlite,Python 2.7,Pandas,我从一个我无法控制的程序创建的SQLite表中读取数据 我无法理解这个SQL表的布局背后的想法,但事实就是这样 此表在SQL中如下所示: 它实际上是什么,我想在python数据框架中得到的是: 到目前为止,我能想到的唯一方法是获取一个RowID列表,循环它们,然后重建表 但我想知道,在执行SELECT语句时,或者稍后在熊猫数据帧本身上,是否有更简单、更快的方法(数据库很大) 要加载我正在使用的数据,请执行以下操作: import pandas as pd import sqlite3 co

我从一个我无法控制的程序创建的SQLite表中读取数据

我无法理解这个SQL表的布局背后的想法,但事实就是这样

此表在SQL中如下所示:

它实际上是什么,我想在python数据框架中得到的是:

到目前为止,我能想到的唯一方法是获取一个RowID列表,循环它们,然后重建表

但我想知道,在执行SELECT语句时,或者稍后在熊猫数据帧本身上,是否有更简单、更快的方法(数据库很大)

要加载我正在使用的数据,请执行以下操作:

import pandas as pd
import sqlite3

con = sqlite3.connect(sql_path)
#Simplified here, to produce the Table I filter on a few things
df = pd.read_sql('SELECT * from Table',con=con, index_col='RowID')
我已经拼命尝试了很多东西,包括pd.pivot或pd.groupby,但都失败了,但这可能只是因为我不知道如何正确使用它

版本:

Python:2.7.8 | Pandas:0.16.0 | sqlite3:2.6.0


只需设置索引并取消堆栈。您可以使用“rowid”而不是“rowname”,或者在索引中包含这两个,如果您不想遗漏其中一个,但就解决方案而言,这是多余的

df = pd.DataFrame({ 'rowname':[1,1,2,2], 'colname':[1,2,1,2], 'values':['a11','a12','a21','a22'] })

df
   colname  rowname values
0        1        1    a11
1        2        1    a12
2        1        2    a21
3        2        2    a22

df.set_index(['rowname','colname']).unstack()

        values     
colname      1    2
rowname            
1          a11  a12
2          a21  a22