所以我有一个股票清单的价格和天数的数据集
数据按股票代码和日期排序
对于每一行,我希望能够得到下一个日期以及下一个日期的收盘价。在符号不同的情况下,我需要空值。只要日期是对象类型,它就适用于日期字段,但如果字段是日期时间类型,则会导致无效的类型升级
比如说
Symbol Date Price
A 2020-01-01 50
A 2020-01-02 51
B 2020-01-01 101
我希望第一条记录的NextClose字段为51,NextDate值为2020-12-02
对于第二条记录,我希望两个值都为null,因为符号发生了变化
df = pd.DataFrame({"Date": ["2020-01-01", "2020-01-02","2020-01-03"],
"Symbol": ["A","A","B"],
"Price": [50, 51, 101]})
/*this works */
df['NextClose']=np.where(df['Symbol'] ==df ['Symbol'].shift(-1),df ['Price'].shift(-1).round(4),np.nan)
df['NextDate']=np.where(df['Symbol'] ==df ['Symbol'].shift(-1),df ['Date'].shift(-1),np.nan)
/* this gives the invalid type promotion error */
df["NewDate"]=pd.to_datetime(df["Date"])
df['NextNewDate']=np.where(df['Symbol'] ==df ['Symbol'].shift(-1),df ['NewDate'].shift(-1),np.nan)
当字段是datetime类型时,我可以用空值填充NextClose字段吗
谢谢
注:
df['NextNewDate']=np.where(df['Symbol'] ==df ['Symbol'].shift(-1),df ['NewDate'].shift(-1),pd.NaT)
不抛出错误,但以历元时间(157792320000000000)返回结果
df['NextNewDate']=pd.to_datetime(df["NextNewDate"])
在返回正确的日期之后添加此项,但这似乎是一个额外的步骤
目前没有回答
相关问题 更多 >
编程相关推荐