У меня есть следующие данные:
date locid month price
11/2/2017 17 11/1/2017 -0.0025
11/2/2017 17 12/1/2017 0
11/2/2017 105 11/1/2017 -0.895
11/2/2017 105 12/1/2017 -1
11/3/2017 17 11/1/2017 -0.0025
11/3/2017 17 12/1/2017 0.01
11/3/2017 105 11/1/2017 -0.895
11/3/2017 105 12/1/2017 -1.01
Я хотел бы вернуть результат, который показывает разницу в ценах для каждого locid, для каждого месяца, для каждой даты. Результат будет иметь только четыре строки:
date month price
11/2/2017 11/1/2017 0.8925
11/2/2017 12/1/2017 1
11/3/2017 11/1/2017 0.8925
11/3/2017 12/1/2017 1.02
Я получил результат только со следующей строкой:
df.loc[df['locid']==17].price - df.loc[df['locid']==105].price
Однако я не думаю, что это надежное решение. До сортировки столбца df.date мой результат содержал восемь строк. Кроме того, я не уверен, что python / pandas соответствует df.months, я думаю, что они могут быть в правильном порядке.
Я хотел бы знать, как:
1) убедитесь, что я вычитаю в правильном порядке (в данном случае я хочу locid 17-105), что если они были в обратном порядке в моих данных ? Что если бы было три локуса, а я хотел увидеть только два?
2) убедитесь, что 17-105 - это дата == 11/2/2017 и месяц == 11/1/2017. IE дата и месяц должны совпадать, прежде чем вычесть
3) если данные были сначала повернуты, как сделать вычитание
Спасибо