Pandas 多级索引数据帧的列值未正确更新

Pandas 多级索引数据帧的列值未正确更新,pandas,dataframe,Pandas,Dataframe,从上面的代码中,我期望下表: import pandas as pd import numpy as np df = pd.DataFrame(np.arange(30).reshape(6,5), index=[list('aaabbb'), list('XYZXYZ')]) print(df) df.loc[pd.IndexSlice['a'], 3] /= 10 print(df) 0 1 2 3 4 a X 0 1 2 0.3 4

从上面的代码中,我期望下表:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(30).reshape(6,5), index=[list('aaabbb'), list('XYZXYZ')])

print(df)

df.loc[pd.IndexSlice['a'], 3] /= 10

print(df)
      0   1   2   3   4
a X   0   1   2   0.3   4
  Y   5   6   7   0.8   9
  Z  10  11  12  0.13  14
b X  15  16  17  18  19
  Y  20  21  22  23  24
  Z  25  26  27  28  29
但实际结果如下表所示:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(30).reshape(6,5), index=[list('aaabbb'), list('XYZXYZ')])

print(df)

df.loc[pd.IndexSlice['a'], 3] /= 10

print(df)
      0   1   2   3   4
a X   0   1   2   0.3   4
  Y   5   6   7   0.8   9
  Z  10  11  12  0.13  14
b X  15  16  17  18  19
  Y  20  21  22  23  24
  Z  25  26  27  28  29

代码中出现了什么错误?

需要通过
为“选择所有值”指定第二级:

      0   1   2     3   4
a X   0   1   2   NaN   4
  Y   5   6   7   NaN   9
  Z  10  11  12   NaN  14
b X  15  16  17  18.0  19
  Y  20  21  22  23.0  24
  Z  25  26  27  28.0  29
带切片的解决方案:

df.loc[pd.IndexSlice['a', :], 3] /= 10
print(df)
      0   1   2     3   4
a X   0   1   2   0.3   4
  Y   5   6   7   0.8   9
  Z  10  11  12   1.3  14
b X  15  16  17  18.0  19
  Y  20  21  22  23.0  24
  Z  25  26  27  28.0  29

非常感谢你!如果我的答案有用,别忘了-点击复选标记(
),将其从灰显切换为填充。谢谢