【问题标题】:Multi index pandas dataframe and .diff()多索引熊猫数据框和 .diff()
【发布时间】:2018-01-08 11:06:51
【问题描述】:

假设我有以下多索引熊猫数据框:

                     A    B
Date        Code     
01-01-2017  s1       1    2
            s2       3    1
01-02-2017  s1       2    2    
            s2       3    3

与讨论的 here 不同,我不希望 .diff(1) 对具有相同日期的值进行操作并在每个新日期重置,我希望 .diff(1) 提供以下输出:

                     A    B
Date        Code     
01-01-2017  s1       Nan  Nan
            s2       Nan  Nan
01-02-2017  s1       1    0    
            s2       2    1

.diff(1) 由级别 0 的索引的不同值指定的块产生差异,而不是在建议的链接中的块内。 换句话说,我想通过条目减去这两个矩阵:

|2    2|  _  |1    2| 
|3    3|     |3    1|

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

    您可以在第二级使用groupbyDataFrameGroupBy.diff

    df = df.sort_index()
    
    df = df.groupby(level=1).diff()
    print (df)
                       A    B
    Date       Code          
    01-01-2017 s1    NaN  NaN
               s2    NaN  NaN
    01-02-2017 s1    1.0  0.0
               s2    0.0  2.0
    

    因为如果使用第一级:

    df = df.groupby(level=0).diff()
    print (df)
                       A    B
    Date       Code          
    01-01-2017 s1    NaN  NaN
               s2    2.0 -1.0
    01-02-2017 s1    NaN  NaN
               s2    1.0  1.0
    

    【讨论】:

    • 我们应该假设0级索引是有序的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2017-02-22
    • 2019-05-21
    • 2019-03-18
    • 2017-12-14
    • 2022-07-10
    • 2021-11-11
    相关资源
    最近更新 更多