【问题标题】:Problems reading and concatenating CSV files into a single dataframe读取 CSV 文件并将其连接到单个数据帧时出现问题
【发布时间】:2020-07-15 16:49:00
【问题描述】:

我要去雅虎财经并提取德国股票的数据。然后将它们写入单独的 CSV 文件。

然后我想将它们读回单个数据帧。

#获取股票的代码

tickers = ["MUV2.DE","DTE.DE", "VNA.DE", "ALV.DE", "BAYN.DE", "EOAN.DE", "RWE.DE", "CON.DE", "HEN3.DE", "BAS.DE", "FME.DE", "WDI.DE", "IFX.DE", "SAP.DE", "BMW.DE", "DPW.DE", "DB1.DE", "DAI.DE", "BEI.DE", "SIE.DE", "ADS.DE", "DBK.DE", "FRE.DE", "HEI.DE", "MRK.DE", "LHA.DE", "VOW3.DE", "1COV.DE", "LIN.DE", "TKA.DE"]
start = datetime.datetime(2012,5,31)
end = datetime.datetime(2020,3,1)

# Go to yahoo and pull data for the following tickers and then write them to CSV
for ticker in tickers:
    df = pdr.get_data_yahoo(ticker, start=start, end=end)
    df.to_csv(f"{ticker}.csv")

完成上述操作后,我将读取所有股票代码名称的 CSV,然后将它们与各个 CSV 文件名连接起来。好吧,这就是我至少想做的。

import pandas as pd
tickers = pd.read_csv('C:/Users/XXX/Desktop/Momentum/tickers.csv', header=None)[1].tolist()

stocks = (
    (pd.concat(
        [pd.read_csv(f"C:/Users/XXX/Desktop/Momentum/{ticker}.csv", index_col='Date', parse_dates=True)['Adj Close'].rename(.replace(".DE", "")ticker)
        for ticker in tickers],
        axis=1,
        sort=True)
    )
)
stocks = stocks.loc[:,~stocks.columns.duplicated()]

现在我以前可以使用此代码,但是在导入其他股票代码时。我的 jupyter notebook 所做的就是旋转出来。

我想知道问题出在哪里,是不是因为 CSV 文件名类似于 ADS.DE.csv,以及第一个 . 是否会导致问题。

【问题讨论】:

    标签: python pandas dataframe csv yahoo-finance


    【解决方案1】:

    我用下面的代码解决了这个问题。

    import os
    for filename in os.listdir('dirname'):
        os.rename(filename, filename.replace('_intsect_d', ''))
    

    【讨论】:

      猜你喜欢
      • 2014-11-13
      • 2013-09-10
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多