如何根据共同日期在单个数据框中对齐两个数据框的数据[重复]

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。

以上是关于如何根据共同日期在单个数据框中对齐两个数据框的数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas:根据相同数据框的日期时间索引查找添加新列

如何使用单个索引更新多索引数据框中的记录

如何将两个组合框的选定项与单个数据源分开?

如何将 numpy 数组存储在 Pandas 数据框的列中?

如何将 numpy 数组存储在 Pandas 数据框的列中?

如何根据从其他框中选择的文本更改动态创建的组合框的显示项