Pandas сравнить значения по датам - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть данные типа

Date, Name, Something
2020-04-01,John,10
2020-04-01,Ivory,5
2020-04-01,Sam,3
2020-04-02,John,5
2020-04-02,Ivory,2
2020-04-02,Sam,1
2020-04-02,John,20
2020-04-02,Ivory,3
2020-04-02,Sam,9

, работающие с pandas, я хочу сравнить вчерашнее значение по имени, с сегодняшним результатом, чтобы получить увеличение, уменьшение. shift (3) не будет работать, потому что количество имен отличается для каждого дня. Как мне это сделать. Я хочу добавить предыдущий номер. Я пытался

df['old_data'] = df[(work['Name'] == df['Name']) & (df['Date'] ==
                                                                 (df['Date'] - pd.Timedelta(days = 1))
                                                                 )]['Something']

, но это не сработало.

1 Ответ

1 голос
/ 26 апреля 2020

Попробуйте:

import pandas as pd


df = pd.DataFrame({'Date': {0:'2020-04-01', 1:'2020-04-01', 2:'2020-04-01', 
                             3:'2020-04-02', 4:'2020-04-02', 5:'2020-04-02', 
                             6:'2020-04-03', 7:'2020-04-03', 8:'2020-04-03'},
                    'Name': {0:'John', 1:'Ivory', 2:'Sam', 
                             3:'John', 4:'Ivory', 5:'Sam', 
                             6:'John', 7:'Ivory', 8:'Sam'},
                    'Something': {0:10, 1:5, 2:3, 
                                  3:5, 4:2, 5:1, 
                                  6:20, 7:3, 8:9}})

df['diff'] = df.groupby('Name')['Something'].diff()

df.dropna()

Я изменил ваши данные, изменив последние три даты на «2020-04-03».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...