如何根据共同日期在单个数据框中对齐两个数据框的数据[重复]
Posted
技术标签:
【中文标题】如何根据共同日期在单个数据框中对齐两个数据框的数据[重复]【英文标题】:How to align data of two dataframes in a single dataframe based on common dates [duplicate] 【发布时间】:2021-11-12 01:27:46 【问题描述】:我有两个 csv 文件,我从中创建了一个数据框。问题是它首先添加了“Tatasteel”的数据,然后是“Tatamotors”的数据。 我想要的是根据日期订购它们。例如,Tatasteel 9:15 的第一个数据,Tatamotors 9:15 的数据等等。
代码如下:
import pandas as pd
import datetime as dt
from datetime import timedelta
import os
import glob
exclude_days = [dt.datetime(2019, 1, 5), dt.datetime(2019, 1, 6), dt.datetime(2019, 1, 12), dt.datetime(2019, 1, 13), dt.datetime(2019, 1, 19), dt.datetime(2019, 1, 20),
dt.datetime(2019, 1, 26), dt.datetime(2019, 1, 27) ]
backtest_start = dt.datetime(2019, 1, 1)
backtest_end = dt.datetime(2019, 1, 2)
path = os.getcwd()
path = os.path.join(path,"2019/*")
dat=[]
data3 =[]
stock_list = glob.glob(path)
for stock in stock_list:
rdata= pd.read_csv(stock, parse_dates=['Date'])
dat.append(rdata)
data = pd.concat(dat, ignore_index=True)
curr_day = backtest_start
while curr_day < backtest_end:
if curr_day not in exclude_days:
day_start = dt.datetime(curr_day.year,curr_day.month,curr_day.day, 9, 15)
day_end = dt.datetime(curr_day.year,curr_day.month,curr_day.day, 15, 15)
data2 = data[data['Date'].between(day_start,day_end)]
data2 = data2.reset_index(drop=True)
data2 = pd.DataFrame(data2)
print(data2)
curr_day += timedelta(days=1)
这是输出:
【问题讨论】:
【参考方案1】:使用sort_values
:
df = df.sort_values('Date')
或者,如果您希望 Date
列作为索引:
df = df.set_index('Date').sort_index()
【讨论】:
你怎么知道 OP 需要Date
像索引?我认为这个解决方案应该转换为 wiki。以上是关于如何根据共同日期在单个数据框中对齐两个数据框的数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 numpy 数组存储在 Pandas 数据框的列中?