我想用一种方法总结一个数据库表,这样共享一个公共I d的行就被总结成一行输出。
我的工具是SQLite和Python 2.x
例如,下表列出了我当地超市的水果价格。。。
+--------------------+--------------------+--------------------+
|Fruit |Shop |Price |
+--------------------+--------------------+--------------------+
|Apple |Coles |$1.50 |
|Apple |Woolworths |$1.60 |
|Apple |IGA |$1.70 |
|Banana |Coles |$0.50 |
|Banana |Woolworths |$0.60 |
|Banana |IGA |$0.70 |
|Cherry |Coles |$5.00 |
|Date |Coles |$2.00 |
|Date |Woolworths |$2.10 |
|Elderberry |IGA |$10.00 |
+--------------------+--------------------+--------------------+
。。。我想制作一张汇总表,显示每个超市每种水果的价格。空格应该用空字符填充。
+----------+----------+----------+----------+
|Fruit |Coles |Woolworths|IGA |
+----------+----------+----------+----------+
|Apple |$1.50 |$1.60 |$1.70 |
|Banana |$0.50 |$0.60 |$0.70 |
|Cherry |NULL |$5.00 |NULL |
|Date |$2.00 |$2.10 |NULL |
|Elderberry|NULL |NULL |$10.00 |
+----------+----------+----------+----------+
我相信文献中称之为“pivot表”或“pivot查询”,但显然是SQLite doesn't support ^{LEFT JOIN
s。这对我来说并不是很有吸引力,因为我事先不知道“column”的名称)
现在,我通过在Python中遍历整个表并累积一个dict
的dicts
,这有点笨拙。我对更好的解决方案持开放态度,不管是用Python还是SQLite,它们都会以表格的形式给出数据。
在python方面,您可以使用一些itertools魔术来重新排列数据:
输出:
熊猫套餐能很好地处理这个问题。
文件: http://pandas.pydata.org/pandas-docs/stable/reshaping.html
一些学习熊猫的IPython笔记本: https://bitbucket.org/hrojas/learn-pandas
希望这会有帮助。
致意
帕特里克·布罗克曼
相关问题 更多 >
编程相关推荐