查找与同一股票代码的上一个日期关联的值 [重复]

Looking up the value associated with the previous date of same ticker [duplicate]

提问人:lara_toff 提问时间:11/17/2023 更新时间:11/17/2023 访问量:28

问:

我有一个只有 4 行的可重现示例,但我将其用于 12m 行数据集。

有没有更简单的方法可以实现以下代码的功能?正如你所看到的,有很多步骤。

import pandas as pd

df = pd.DataFrame([['1/1/2023','ABC',0.01],['1/1/2023','XYZ',0.09],['1/7/2023','ABC',0.0],['1/7/2023','XYZ',0.03]],columns=['date','ticker','price'])
df['date'] = pd.to_datetime(df['date'])
dates = pd.DataFrame(df['date'].unique(),columns=['date'])
dates['lastweek'] = dates['date'].shift(1)
tmp = df[['date','ticker']]
tmp = tmp.merge(dates,on='date',how='left')
tmp = tmp.merge(df[['date','ticker','price']],left_on=['lastweek','ticker'],right_on=['date','ticker'])
tmp['price'] = tmp['price'].fillna(0)
tmp = tmp.drop(columns=['date_y'])
tmp = tmp.rename(columns={'date_x':'date','price':'lastweekprice'})
df = df.merge(tmp[['date','ticker','lastweekprice']],on=['date','ticker'],how='left')
python pandas 数据帧 合并

评论


答:

-1赞 Panda Kim 11/17/2023 #1

法典

如果您的数据是按周计算的,如示例中所示,并且您希望按股票代码获取前一周的数据,则可以使用 + 。groupbyshift

out = df.assign(lastweekprice=df.groupby('ticker')['price'].shift())

外:

    date        ticker  price   lastweekprice
0   1/1/2023    ABC     0.01    NaN
1   1/1/2023    XYZ     0.09    NaN
2   1/7/2023    ABC     0.00    0.01
3   1/7/2023    XYZ     0.03    0.09

此外,通过清楚地解释您想要的输入和期望的输出,获得响应会容易得多,而不必阅读不必要且冗长的代码来清楚地了解您需要做什么并找到改进代码的方法。