Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:如何向多索引空数据帧添加数据?_Python_Pandas_Dataframe_Multi Index - Fatal编程技术网

Python 熊猫:如何向多索引空数据帧添加数据?

Python 熊猫:如何向多索引空数据帧添加数据?,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我想使用多索引数据帧来轻松地选择数据帧的部分。我创建了一个空数据框,如下所示: 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=[[],[]],lev

我想使用多索引数据帧来轻松地选择数据帧的部分。我创建了一个空数据框,如下所示:

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)
这似乎很好。 但是,我不知道如何插入单个数据来开始填充我的数据帧。我尝试了以下方法:

population.loc[('optim','pareto'),(0,0)]=True
在这里,我试图定义一个新的列双索引(0,0),导致出现
NotImplementedError
。我还尝试了(0,1),它给出了一个
ValueError

我也尝试过不使用列索引:

population.loc[('optim','pareto')]=True
没有错误…但数据帧也没有变化。。。 有什么帮助吗?提前谢谢

编辑 为了澄清我的问题,一旦填充,我的数据框应该如下所示:

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 我发现,如果我在创建数据帧时定义第一列,我所做的工作就会起作用。特别是:

mc = pd.MultiIndex.from_tuples([(0,0)])
我得到了一个满是
nan
的第一列,我可以根据需要添加数据(也可以添加新列):


我仍然不知道我的第一个定义有什么问题…

即使我不知道我最初的定义为什么是错误的,下面的工作正如预期的那样:

mi = {'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.from_tuples([(0,0)],names=['Generation','Individual'])
population = pd.DataFrame(index=mi,columns=mc)
看起来解决方案是在数据帧创建时初始化列(这里使用(0,0)列)。然后,创建的数据帧是:

Generation      0
Individual      0
input a       NaN
      b       NaN
      c       NaN
optim pareto  NaN
      alive   NaN

然后可以通过向当前列或新列/行添加值来填充。

我认为在代码的第一个块之后,这样做不好
population
返回一个包含5个元组索引和0列的exmpty数据帧,这可能不是您想要的。发布一个示例,说明您希望输出的样子,也许我们可以更好地帮助您。对列尝试使用
字符串而不是
int
,因此
population.loc[('optim','pareto'),('0','0')]=True
否,对列使用
字符串
没有帮助:它导致相同的
未实现错误。
Generation      0
Individual      0
input a       NaN
      b       NaN
      c       NaN
optim pareto  NaN
      alive   NaN