使用数据透视表查找日期索引之间的差异



我有一个包含 5 列的数据帧,如下所示:

ID  date    account_no  service_name    amount
0   0   2019-09-01  123456789012    AWS CloudTrail  0.00

数据时间为9月1日至10月14日。由于安全原因无法共享:)

我想比较 2 个日期(9 月 21 日和 10 月 10 日(并找到差异。

以下代码按预期工作。但我想知道是否有更好的方法。

x = df[df.date == "2019-09-21"]
x = x[x.columns[3:]]
x.columns = ["service_name", "2019-09-21"]
y = df[df.date == "2019-10-10"]
y = y[y.columns[3:]]
y.columns = ["service_name", "2019-10-10"]
ndf = x.merge(y, on="service_name")
ndf["diff"] = ndf["2019-09-21"] - ndf["2019-10-10"]
service_name    2019-09-21  2019-10-10  diff
6   EC2 - Other 2.75    2.39    0.36
7   Amazon Elastic Compute Cloud - Compute  0.16    2.54    -2.38

我正在尝试找到pivot_table类似的解决方案,我可以在其中获得每周差异、每月差异等的报告。

首先使用DataFrame.pivotDataFrame.pivot_table

ndf = df.pivot(index='service_name',columns='date',values='amount')
#if aggregation is necessary
#ndf = df.pivot_table(index='service_name',columns='date',values='amount', aggfunc='mean')
ndf["diff"] = ndf["2019-09-21"] - ndf["2019-10-10"]
print (ndf)
date                                    2019-09-01  2019-09-21  2019-10-10  
service_name                                                                 
AWS CloudTrail                                 0.0         NaN         NaN   
Amazon Elastic Compute Cloud - Compute         NaN        0.16        2.54   
EC2 - Other                                    NaN        2.75        2.39   
date                                    diff  
service_name                                  
AWS CloudTrail                           NaN  
Amazon Elastic Compute Cloud - Compute -2.38  
EC2 - Other                             0.36  

最新更新