繁体   English   中英

多索引熊猫数据框和.diff()

[英]Multi index pandas dataframe and .diff()

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

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

这里讨论的不同,我不希望.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|

您可以通过DataFrameGroupBy.diff在第二级使用groupby

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM