为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:如何将数据添加到 MultiIndex 空 DataFrame?

Pandas:如何将数据添加到 MultiIndex 空 DataFrame?

慕标琳琳 2021-07-08 18:38:03
我想使用 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               2Individual     1    2    3     4    5     6input       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我仍然不知道我的第一个定义有什么问题......
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

即使我不知道为什么我的初始定义是错误的,以下内容也按预期工作:


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)

看起来解决方案是在创建 DataFrame 时初始化列(此处为 (0,0) 列)。然后创建的 DataFrame 是:


Generation      0

Individual      0

input a       NaN

      b       NaN

      c       NaN

optim pareto  NaN

      alive   NaN

然后可以填充将值添加到当前列或新列/行。


查看完整回答
反对 回复 2021-07-13
  • 1 回答
  • 0 关注
  • 410 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信