【发布时间】:2018-10-10 15:48:26
【问题描述】:
我想使用 MultiIndex DataFrame 轻松选择 DataFrame 的各个部分。我创建了一个空的 DataFrame,如下所示:
mi = mindex = {'input':['a','b','c'],'optim':['pareto','alive']}
mi = pd.MultiIndex.from_tuples([(c,k) for c in mi.keys() for k in mi[c]])
mc = pd.MultiIndex(names=['Generation','Individual'],labels=[[],[]],levels=[[],[]])
population = pd.DataFrame(index=mi,columns=mc)
这似乎很好。 但是,我不知道如何插入单个数据来开始填充我的 DataFrame。我尝试了以下方法:
population.loc[('optim','pareto'),(0,0)]=True
我试图定义一个新的列双索引 (0,0) 导致 NotImplementedError。我还尝试了 (0,1),它给出了 ValueError。
我也试过没有列索引:
population.loc[('optim','pareto')]=True
这没有给出错误...但 DataFrame 也没有变化... 有什么帮助吗?提前致谢。
编辑 为了澄清我的问题,一旦填充,我的 DataFrame 应该如下所示:
Generation 1 2
Individual 1 2 3 4 5 6
input a 1 1 2 ...
b 1 2 2 ...
c 1 1 2 ...
optim pareto True True False ...
alive True True False ...
编辑 2 我发现如果我在创建 DataFrame 时定义我的第一列,我正在做的事情是有效的。特别是:
mc = pd.MultiIndex.from_tuples([(0,0)])
我的第一列充满了nan,我可以根据需要添加数据(也适用于新列):
population.loc[('optim','pareto'),(0,1)]=True
我仍然不知道我的第一个定义有什么问题......
【问题讨论】:
-
我认为在您的代码的第一块之后不好。
population返回一个包含 5 个元组索引和 0 个列的 exmpty 数据帧,这可能不是您想要的。发布一个您希望输出的示例,也许我们可以为您提供更好的帮助。 -
尝试使用
string代替int,所以population.loc[('optim','pareto'),('0','0')]=True -
不,对列使用
string没有帮助:它会导致相同的NotImplementedError。
标签: python pandas dataframe multi-index