访问和覆盖 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
我正在尝试将第一个多索引等于 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