【问题标题】:Replace a value in MultiIndex (pandas)替换 MultiIndex 中的值(熊猫)
【发布时间】:2015-09-13 08:32:43
【问题描述】:

在以下 DataFrame 中:如何将 ["x2", "Total"] 替换为 ["x2", "x2"] 保留 x1 原样?

l1           900    902    912     913    916     
l2           ИП ПС  ИП ПС  ИП  ПС  ИП ПС  ИП ПС  
i1    i2                                      
x1    Total  10  6   3  3  10  16   2  9   3  8  
x2    Total   1  0   0  0   0   0   0  0   0  0  

.rename 将替换所有 "Total" 值,而不仅仅是我需要的值。

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    假设您的数据框名为 df,以下代码将通过将现有索引替换为修改后的索引来执行您所需的替换。

    index = df.index
    names = index.names
    index = df.index.tolist()[:1]+[('x2','x2')]  
    df.index = pd.MultiIndex.from_tuples(index, names = names)
    

    也可以直接修改索引的内层:

    df.index.set_levels([u'Total', u'x2'],level=1,inplace=True)
    df.index.set_labels([0, 1],level=1,inplace=True)
    

    您也可以使用level='i2' 代替level=1

    【讨论】:

    • 我用的是第一种方式:cis_i, ind_l = np.where(t.index.get_level_values("i1")=="x2")[0][0], t.index.tolist()t.index = pd.MultiIndex.from_tuples(ind_l[:cis_i]+[("x2","x2")]+ind_l[cis_i+1:], names=t.index.names)
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 2016-09-02
    • 2013-06-06
    • 2020-11-29
    • 2016-07-06
    相关资源
    最近更新 更多