首页 > 解决方案 > 熊猫替换多索引行中的值

问题描述

所以,我有一个 MultiIndex DataFrame,我无法找出行来修改行索引值。

在此示例中,我想设置 c = 1,其中“a”索引为 4:

import pandas as pd
import numpy as np

df = pd.DataFrame({('colA', 'x1'): {(1, np.nan, 0): np.nan, (4, np.nan, 0): np.nan},
('colA', 'x2'): {(1, np.nan, 0): np.nan, (4, np.nan, 0): np.nan},
('colA', 'x3'): {(1, np.nan, 0): np.nan, (4, np.nan, 0): np.nan},
('colA', 'x4'): {(1, np.nan, 0): np.nan, (4, np.nan, 0): np.nan}})

df.index.set_names(['a', 'b', 'c'], inplace=True)

print(df)


            colA
              x1    x2  x3  x4
a   b   c               
1   NaN 0   NaN NaN NaN NaN
4   NaN 0   NaN NaN NaN NaN

期望的输出:

            colA
              x1    x2  x3  x4
a   b   c               
1   NaN 0   NaN NaN NaN NaN
4   NaN 1   NaN NaN NaN NaN

任何帮助表示赞赏。

标签: pythonpandasmulti-index

解决方案


假设我们从df.

x = df.reset_index()
x.loc[x[x.a == 4].index, 'c'] = 1
x = x.set_index(['a', 'b', 'c'])
print(x)

        colA            
          x1  x2  x3  x4
a b   c                 
1 NaN 0  NaN NaN NaN NaN
4 NaN 1  NaN NaN NaN NaN

推荐阅读