大熊猫多个索引数据框:创建新的索引或追加到现有索引(Pandas multiple index da

2019-10-19 06:14发布

我有一个数据帧熊猫, multi_df ,其具有由所述的多指数codecolourtextureshape ,如下值:

import pandas as pd
import numpy as np
df = pd.DataFrame({'id' : range(1,9),
                    'code' : ['one', 'one', 'two', 'three',
                                'two', 'three', 'one', 'two'],
                    'colour': ['black', 'white','white','white',
                            'black', 'black', 'white', 'white'],
                    'texture': ['soft', 'soft', 'hard','soft','hard',
                                        'hard','hard','hard'],
                    'shape': ['round', 'triangular', 'triangular','triangular','square',
                                        'triangular','round','triangular'],
                    'amount' : np.random.randn(8)},  columns= ['id','code','colour', 'texture', 'shape', 'amount'])
multi_df = df.set_index(['code','colour','texture','shape']).sort_index()['id']
multi_df
code   colour  texture  shape     
one    black   soft     round         1
       white   hard     round         7
               soft     triangular    2
three  black   hard     triangular    6
       white   soft     triangular    4
two    black   hard     square        5
       white   hard     triangular    3
                        triangular    8
Name: id, dtype: int64

我给出的一个new index - new_id夫妇。 如果new_index (组合)在已经存在multi_df ,我想将追加new_id至现有索引。 如果new_index不存在,我要创建并添加id的值。 例如:

new_id = 15
new_index = ('two','white','hard', 'triangular')
if new_index in multi_df.index:
    # APPEND TO EXISTING: multi_df[('two','white','hard', 'triangular')].append(new_id)
else:
    # CREATE NEW index and put the new_id in.

但是,我不能找出语法追加(IF)或创建(ELSE)的新指标。 任何帮助将是非常受欢迎的。

PS:对于附加我可以看到,我试图将添加对象new_id到是一个Series 。 然而,追加()不工作..

type(multi_df[('two','white','hard', 'triangular')])
<class 'pandas.core.series.Series'>

Answer 1:

append()创建一个新的系列中的每一次,所以它的速度很慢,如果你需要在调用这个for循环:

data = pd.Series(15, index=pd.MultiIndex.from_tuples([('two','white','hard', 'triangular')]))
multi_df.append(data)


文章来源: Pandas multiple index dataframe: creating new index or appending to existing index