панды сгруппированы и сдвигаются, но внутри каждого блока - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть фрейм данных, который я затем группирую:

ID   week   sale 
A     1     1
A     2     4
A     3     10
B     1     7
B     2     2.3
B     3     4.4

Я хотел бы применить смену, чтобы получить продажу за предыдущую неделю, но просто остаться в том же ID-блоке. Желательно будет:

ID   week   sale   sale-shift
A     1     1      nan
A     2     4      1
A     3     10     4
B     1     7      nan
B     2     2.3    7
B     3     4.4    2.3

Если я использую смену:

df['sale-shift']=df['sale'].shift(-1)

не учитывает groupby по ID. Я хотел бы выполнить для каждого удостоверения личности (в моем случае клиента).

Спасибо!

1 Ответ

1 голос
/ 16 апреля 2019
import pandas as pd
from pandas.compat import StringIO

print(pd.__version__)

csvdata = StringIO("""ID,week,sale
A,1,1
A,2,4
A,3,10
B,1,7
B,2,2.3
B,3,4.4""")

df = pd.read_csv(csvdata, sep=",")
df['sale-shift'] = df.groupby('ID')['sale'].shift(-1)
print(df)

...