python - 如何根据共同日期在单个数据框中对齐两个数据框的数据
问题描述
我有两个 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)
解决方案
使用sort_values
:
df = df.sort_values('Date')
或者,如果您希望该Date
列作为索引:
df = df.set_index('Date').sort_index()
推荐阅读
- c++ - 如何在现代 C++ 中创建一个巨大的数组?
- python - 提高类数据框结构的性能
- c# - 在gridview asp,net中导出的excel表中的编码符号
- vba - 如何在 Microsoft Access 查询中自动执行 CTRL + H 函数?
- c# - 如何从代码更新 Blazor 静态布局
- sql - 无法使用 IBM DB2 LOAD 工具加载数据集
- apache-kafka-connect - Kinesis Kafka 连接器
- android - 当我清除APP缓存时,自动登录不起作用
- python - 更改读数大小 python 小部件
- python - 使用python将文件夹的内容放入zip