【发布时间】:2018-06-13 16:02:42
【问题描述】:
我已经编写了一个优化模型,现在我想为不同的变量生成一些输出文件 (xlsx)。我已使用以下代码将变量的全部数据放在一个 DataFrame 中:
block_vars = []
for var in model.component_data_objects(Var):
block_vars.append(var.parent_component())
block_vars = list(set(block_vars))
dc = {(str(bv).split('.')[0], str(bv).split('.')[-1], i): bv[i].value for bv in block_vars for i in getattr(bv, '_index')}
df = pd.DataFrame(list(dc.items()), columns=['tuple','value'])
df['variable_name'] = df['tuple'].str[-2]
df['variable_index'] = df['tuple'].str[-1]
df.drop('tuple', axis=1, inplace=True)
这很好用(尽管它可能不是最流畅的方式。
现在我用一个块过滤不同的变量,如下所示:
writer = pd.ExcelWriter('UC.xlsx')
conditions = {'variable_name':'vCommit'}
df_uc = df.copy()
df_uc = df_uc[(df_uc[list(conditions)] == pd.Series(conditions)).all(axis=1)].drop('variable_name', 1)
df_uc.to_excel(writer, 'Tabelle1')
这也有效。现在是我正在努力的部分。 这些变量被索引(有 2 或 3 个索引,具体取决于变量),我希望输出如下:
index1 index2 value
1 1 1
1 2 0
...
但是这些索引在 DataFrame 的一行中的一个元组中,我不确定如何访问它们并相应地重塑 DataFrame。 有人知道这样做的方法吗?谢谢你的帮助!!!
【问题讨论】: