我有下面的表:如何指示多索引列使用read_sql_query(熊猫dataframes)
| Date | ProductId | SubProductId | Value |
我试图从该表中检索数据,并把它放在一个大熊猫数据帧。
我想数据框有以下结构:
- 指数:红枣
- 列:产品
- 子栏目:子产品
(products) 1 2 ... (subproducts) 1 2 3 1 2 3 ... date 2015-01-02 val val val ... 2015-01-03 val val val ... 2015-01-04 ... 2015-01-05 ...
我已经有dataframes机智h产品和副产品以及日期。
我明白,我需要使用多指标,这里是我的尝试:
query ="SELECT Date, ProductId, SubProductId, Value " \
" FROM table "\
" WHERE SubProductId in (1,2,3)"\
" AND ProductId in (1,2,3)"\
" AND Date BETWEEN '2015-01-02' AND '2015-01-08' "\
" GROUP BY Date, ProductId, SubProductId, Value "\
" ORDER BY Date, ProductId, SubProductId "
df = pd.read_sql_query(query, conn, index_col=pd.MultiIndex.from_product([df_products['products'].tolist(), df_subproducts['subproducts'].tolist()])
但它不工作,因为查询返回的“价值”的矢量(形状为Nb的价值x 1),而我需要在数据框中有一个矩阵(形状:不同日期的nb(产品的nb个产品* nb))。
怎样才可以实现:
- 直接通过读取SQL查询?
- 或者在数据库值插入后,通过“trandofrming”数据帧?
注意:我正在使用Microsoft SQL Server。
只注意到:这样做的时候,如果有一些NaN值对于给定的日期,产品,子产品,它将放置子列在数据帧的结束,而不是在产品列。如何解决它? – Arthurim
@Arty,你能否用可复制的样本数据集来开一个新的问题? – MaxU