Использование сводной таблицы, чтобы найти разницу между индексом даты - PullRequest
1 голос
/ 14 октября 2019

У меня есть датафрейм с 5 столбцами, который выглядит следующим образом:

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

Данные доступны с 1 сентября по 14 октября. Не может поделиться из-за соображений безопасности:)

Я хотел бы сравнить 2 даты (21 сентября и 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, где я могу получить отчет о еженедельной разнице, месячной разнице и т. Д.

1 Ответ

2 голосов
/ 14 октября 2019

Использование DataFrame.pivot или DataFrame.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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...