在Pandas中填写缺少的布尔行

时间:2014-12-23 18:34:04

标签: python mysql pandas

我有一个MySQL查询正在执行groupby并以下列形式返回数据:

  

ID |布尔|计数

有时表中没有其中一个布尔状态的数据,因此可能会返回单个ID的数据:

  

1234 | 0 | 10

但是我需要这种形式用于下游分析:

  

1234 | 0 | 10个
  1234 | 1 | 0

,[ID,布尔]的索引。

从查询Google和SO,看起来让MySQL进行这种转换似乎有点痛苦。在熊猫中有一个简单的方法吗?我无法在文档或熊猫食谱中找到任何有用的东西。

您可以假设我已经将数据加载到没有索引的Pandas数据帧中。

感谢。

1 个答案:

答案 0 :(得分:1)

我会将您的数据框的索引设置为IDBoolean列,并从唯一值的笛卡尔积中构造一个新索引。

看起来像这样:

import pandas
indexcols = ['ID', 'Boolean']

data = pandas.read_sql_query(engine, querytext)
full_index = pandas.MultiIndex.from_product(
    [data['ID'].unique(), [0, 1]], 
    names=indexcols
)

data = (
    data.set_index(indexcols)
        .reindex(full_index)
        .fillna(0)
        .reset_index()
)