【问题标题】:How to broadcast based on an index specification?如何根据索引规范进行广播?
【发布时间】:2022-08-17 20:17:31
【问题描述】:

我有以下输入和用例,注意索引是数组,当len 大于一时,表示广播:

import pandas as pd 

df = pd.DataFrame([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]],
                  index=pd.Index([[1], [2, 3], [4]]),
                  columns=[\'a\', \'b\', \'c\'])
print(df)

并希望以一种广播值的方式展平索引,如下所示:

expected = pd.DataFrame([[1, 2, 3],
                         [4, 5, 6],
                         [4, 5, 6],
                         [7, 8, 9]],
                        index=[1, 2, 3, 4],
                        columns=[\'a\', \'b\', \'c\'])
print(expected)    

    标签: python pandas


    【解决方案1】:

    您可以暂时将索引设置为列,explode 它并将其设置回索引:

    df.reset_index().explode('index').set_index('index')
    

    输出:

           a  b  c
    index         
    1      1  2  3
    2      4  5  6
    3      4  5  6
    4      7  8  9
    

    【讨论】:

    • 惊人的!多谢!我不知道explode 方法。
    猜你喜欢
    • 2012-08-23
    • 2014-09-21
    • 2011-11-06
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多