使用熊猫加入两个时间序列

我有两个时间序列。两个系列都有相同的列。他们有一些共同的日期。两个系列的其中一列是 Close,代表收盘价。我想加入这些收盘价。我使用了以下代码。但它在最后一行产生错误。


dow=pd.read_csv("dow.csv",index_col="Date")

sensex=pd.read_csv("sensex.csv",index_col="Date")

dow_close=dow["Close"]

sensex_close=sensex["Close"]

dow_close.index=pd.to_datetime(dow_close.index)

sensex_close.index=pd.to_datetime(sensex_close.index)

dow_sensex_close=dow_close.join(sensex_close,how='inner')


四季花海
浏览 56回答 2
2回答

慕森王

主要问题是您的子设置方法。使用 .loc 函数进行子设置。您将获得新的数据框作为数据框而不是系列。然后使用 .join 函数以及 ls 和 rs 后缀。dow=pd.read_csv("dow.csv",index_col="Date")sensex=pd.read_csv("sensex.csv",index_col="Date")dow_close=dow.loc[:,["Close"]]sensex_close=sensex.loc[:,["Close"]]dow_close.index=pd.to_datetime(dow_close.index)sensex_close.index=pd.to_datetime(sensex_close.index)dow_sensex_close = dow_close.join(sensex_close,how='inner',lsuffix='_dow', rsuffix='_sensex')dow_sensex_close.head()

蓝山帝景

当您调用join时,其他对象可以是Series,但 self对象必须只是一个DataFrame。所以第一个更正是运行:dow_close.to_frame().join(sensex_close, ...)但这还不够,因为您有重叠的列。为避免另一个异常(列重叠但未指定后缀),您必须至少指定lsuffix和rsuffix 之一。我的建议是指定它们:dow_sensex_close = dow_close.to_frame().join(sensex_close,    how='inner', lsuffix='_dow', rsuffix='_sensex')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python