【问题标题】:Ongoing-number as first multiindex in pandas正在进行的数字作为熊猫中的第一个多索引
【发布时间】:2018-09-01 10:28:48
【问题描述】:

在分组(按id)数据框df

id, last_name, first_name
sdfg, Muller, Peter
fgjh, Smith, Rob
fgjh, Smith, Robert
hjsa, Jackson, Michael

我想在开头添加另一个索引person 作为一个正在进行的数字,以便我们得到

person, id, last_name, first_name
0, sdfg, Muller, Peter
1, fgjh, Smith, Rob
1, fgjh, Smith, Robert
2, hjsa, Jackson, Michael

我尝试使用reset_index(...),但无论分组如何,这都会设置一个持续的数字。

有可能吗?

【问题讨论】:

    标签: pandas indexing group-by multi-index


    【解决方案1】:

    这是一种方法:

    df.set_index((~df.index.duplicated()).cumsum()-1, append=True).swaplevel()
    
    #         last_name  first_name
    #   id                         
    # 0 sdfg     Muller       Peter
    # 1 fgjh      Smith         Rob
    #   fgjh      Smith      Robert
    # 2 hjsa    Jackson     Michael
    

    这种方法的工作原理是取反 df.index.duplicated 的结果并获取累积和(减 1)来生成一个数组,该数组在每次索引中的值更改时递增。然后它使用set_indexappend=True 将其添加到您现有的索引中,最后使用swaplevel,这样您的新MultiIndex 的id 部分就处于第1 级。

    【讨论】:

    • 漂亮!谢谢!
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 2016-08-05
    • 2021-11-28
    • 2021-12-03
    • 1970-01-01
    • 2020-09-26
    • 2023-02-14
    • 2014-03-17
    相关资源
    最近更新 更多