访问和覆盖 Multiindex df 数据

Accessing and overwriting Multiindex df data

我正在尝试将第一个多索引等于 Property_2 的以下多索引 df 的所有值与标量相乘:

(index_1,index_2)    Col1
Property_1     A      1
               B      2
               C      3
Property_2     D      1
               E      2
               F      3

我试过各种方法:

df.loc[Property_2,:] = df.loc[Property_2,:]*0.01
df.loc[(Property_2,:),:] = df.loc[(Property_2,:),:]*0.01

但我正在相关地方找回 nan。

那是因为索引不匹配。解决这个问题的一种方法是分配底层的 numpy 数组:

df.loc['Property_2', 'Col1'] = df.loc['Property_2', 'Col1'].mul(0.01).to_numpy()

或者您可以使用 mask:

df['Col1'] = df['Col1'].mask(df.index.get_level_values(0) == 'Property_2', df['Col1']*0.01)

输出:

                    Col1
index_1    index_2      
Property_1 A        1.00
           B        2.00
           C        3.00
Property_2 D        0.01
           E        0.02
           F        0.03