我有大约600个csv文件数据集,它们都有相同的列名['DateTime','Actual','Consensus','Previous','Revised'],所有经济指标和所有时间序列数据集.
目的是在一个csv文件中将它们合并在一起.
使用'DateTime'作为索引.
我希望这个文件被索引的方式是时间线方式,这意味着让我们说第一个csv中的第一个事件日期为12/18/2017 10:00:00,第一个事件发生在第二个csv中,日期为12/29/2017 09:00:00和第三次csv的第一次活动日期为12/20/2017 09:00:00.
因此,我想将它们编入索引后面的第一个和更新的一个,等等,尽管源csv最初来自.
我试图合并其中只有3个作为实验,而问题是'DateTime',因为它将这些中的3个打印在一起就像这样('12/18/2017 2017 10:00:00','12/29/2017 2017 09 :00:00','12/20/2017 09:00:00')以下是代码:
import pandas as pd
df1 = pd.read_csv("E:\Business\Economic Indicators\Consumer Price Index - Core (YoY) - European Monetary Union.csv")
df2 = pd.read_csv("E:\Business\Economic Indicators\Private loans (YoY) - European Monetary Union.csv")
df3 = pd.read_csv("E:\Business\Economic Indicators\Current Account s.a - European Monetary Union.csv")
df = pd.concat([df1, df2, df3], axis=1, join='inner')
df.set_index('DateTime', inplace=True)
print(df.head())
df.to_csv('df.csv')
Run Code Online (Sandbox Code Playgroud) 这段代码的目的是抓取一堆数据表,把它们变成pandas数据框,删除一些不需要的列并修复日期。
每个数据框有 2 列,第一个在每个数据框中称为(“发布日期”),另一列为每个数据框有不同的名称。
然后将这些表串联成一个统一的数据框,以'Release Date'列为索引,所以同时发生的事件必须在同一行。
当我尝试这段代码时:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
import pandas as pd
class DataEngine:
def __init__(self):
self.urls = open(r"C:\Users\Sayed\Desktop\script\sample.txt").readlines()
self.driver = webdriver.Chrome(r"D:\Projects\Tutorial\Driver\chromedriver.exe")
self.wait = WebDriverWait(self.driver, 10)
def title(self):
names = []
for url in self.urls:
self.driver.get(url)
title = self.driver.find_element_by_xpath('//*[@id="leftColumn"]/h1').text
names.append(title)
return names
def table(self):
DataFrames = []
for url in self.urls:
self.driver.get(url)
while True:
try:
item = self.wait.until(
ec.visibility_of_element_located((By.XPATH, '//*[contains(@id,"showMoreHistory")]/a')))
self.driver.execute_script("arguments[0].click();", item)
except …Run Code Online (Sandbox Code Playgroud) 这段代码的目的是抓取一堆 URL,然后从每个 URL 中提取数据表。
将表转换为 Pandas 数据框,固定日期,删除不必要的列,重命名列,最后将它们全部组合成一个统一的数据框,以日期为索引,这样数据将按日期排序,以便发生的事件同时应该在同一行。拼接前的原始数据:
Release Date Argentina Economic Activity YoY
0 2018-10-25 21:00:00+02:00 -1.6%
1 2018-09-26 21:00:00+02:00 -2.7%
2 2018-08-23 21:00:00+02:00 -6.7%
3 2018-07-24 21:00:00+02:00 -5.8%
4 2018-06-26 21:00:00+02:00 -0.9%
Release Date Argentina Gross Domestic Product (GDP) YoY
0 2018-09-19 22:00:00+02:00 -4.2%
1 2018-06-19 21:00:00+02:00 3.6%
2 2018-03-21 21:00:00+02:00 3.9%
3 2017-12-20 22:00:00+02:00 4.2%
4 2017-09-21 21:00:00+02:00 2.7%
Run Code Online (Sandbox Code Playgroud)
但是连接后发生的事情是不同的日期在同一行,所以假设它们是 3 个表,我会在第一行中找到三个日期,然后是第二行......等等。
像这样:
2018-01-24 22:00:00+02:00, 2016-06-29 21:00:00... 3.9% 0.5%
(2018-02-28 22:00:00+02:00, 2016-09-22 21:00:00... 2.0% -3.4%
(2018-03-28 21:00:00+02:00, 2016-12-22 …Run Code Online (Sandbox Code Playgroud)