如何在Pandas multiindex数据框中插入一行?

时间:2015-04-08 02:01:04

标签: pandas multi-index

我有一个带有多索引的Pandas数据帧(Reg,Type,Part,IsExpired) -

Reg        Type      Part     IsExpired    Quantity
APAC       Disk      A        False        10
                              True         12
EMEA       Disk      A        False        22
EMEA       Disk      B        False        13
                              True         17

我想确保IsExpired的每个(Reg,Type,Part)元组都有True和False。例如。我想为(EMEA,Disk,A,True)插入一行 -

Reg        Type      Part     IsExpired    Quantity
APAC       Disk      A        False        10
                              True         12
EMEA       Disk      A        False        22
                              True         0   <-- inserted row
EMEA       Disk      B        False        13
                              True         17

2 个答案:

答案 0 :(得分:2)

你可以unstack然后fillna

In [11]: df2
Out[11]:
                          Quantity
Reg  Type Part IsExpired
APAC Disk A    False            10
               True             12
EMEA Disk A    False            22
          B    False            13
               True             17

In [12]: df2.unstack()
Out[12]:
               Quantity
IsExpired         False True
Reg  Type Part
APAC Disk A          10    12
EMEA Disk A          22   NaN
          B          13    17

In [13]: df2.unstack().fillna(0)
Out[13]:
               Quantity
IsExpired         False True
Reg  Type Part
APAC Disk A          10    12
EMEA Disk A          22     0
          B          13    17

将这个作为专栏保留是否有意义?否则stack回来了:

In [14]: df2.unstack().fillna(0).stack()
Out[14]:
                          Quantity
Reg  Type Part IsExpired
APAC Disk A    False            10
               True             12
EMEA Disk A    False            22
               True              0
          B    False            13
               True             17

答案 1 :(得分:2)

您是否考虑过添加相关行?由于您实际上只是添加一个值的单元格,因此您可以像这样高效地执行此操作:

df.at[('EMEA', 'DISC', 'A', False), 'Quantity'] = 0