将Multindex DataFrame的单个单元格设置为数组

时间:2019-05-22 13:39:26

标签: python arrays pandas dataframe multi-index

我正在创建Multiindex DataFrame,但由于要从文件池中读取数据,所以我事先不知道会有多少行。我基本上想每次都添加一个新行。我发现的最好方法是:

idx = pd.MultiIndex(levels=[[],[]], codes=[[],[]], names=['level0', 'level1'])
df = pd.DataFrame(columns=['Categorical', 'Integer', 'Vector'], index=idx)
df.loc[('a',0),:] = ['apple', 1, 2.3]
df.loc[('a',1),:] = ['banana', 1, 3.4]
...

这很好用。但是然后我想将df.loc[('a',1),'Vector']设置为数组,而不是单个值。通过尝试以下任一方法:

df.loc[pd.IndexSlice['a', 1], 'Vector'] = [1,2]
df.loc[('a',1), 'Vector'] = [1,2]

我明白了

~Continuum\Anaconda3\lib\site-packages\pandas\core\indexing.py in _setitem_with_indexer(self, indexer, value)
    491                         value) and lplane_indexer != len(value):
    492 
--> 493                     if len(obj[idx]) != len(value):
    494                         raise ValueError("cannot set using a multi-index "
    495                                          "selection indexer with a different "
TypeError: object of type 'float' has no len()

我希望将矢量[1,2]设置在[('a',1),'Vector']的单个单元格中 我不想将向量扩展为Multiindex的新级别,因为它通常是数千个元素。 我发现没有解决方法可以实现这一目标。我觉得Pandas试图沿着Multiindex的某些级别对齐向量,但是这样做没有成功。熊猫应该了解,由于我将矢量设置在单行和单列上,因此矢量无法沿Multiindex对齐。

0 个答案:

没有答案