我正在尝试将不同股票上的一些时间序列CSV文件加入。我设法将数据保存在单独的CSV文件中,现在我想将所有数据与日期作为索引一起加入,仅保留其收盘价。为了确定哪个收盘价对应于哪个报价,我必须将“ Close”列重命名为文件名中包含的报价的名称。这些文件具有以下所有命名约定:“ ticker.csv”。这段代码是从pythonprogramming.net网站上获得的灵感,我尝试根据自己的情况进行调整。 (链接在这里:https://pythonprogramming.net/sp500-company-price-data-python-programming-for-finance/)
我已经在网上查找了很多解决方案,但没有一个回答我的问题。
当我尝试将Date设置为索引时,为什么我的代码告诉我有一个键盘错误?
如果我在此行中添加注释并尝试删除一些列,则它表明标签不存在,而每个csv的第一行中都有明确的指示。 AREX.csv
import os
import glob
import pandas as pd
path = "C:/Users/xx/Desktop/Equity"
path1 = "C:/Users/xx/Desktop/Equity/Merged.csv"
def concatenate(indir=path, outfile = path1):
os.chdir(indir)
fileList = glob.glob("*.csv")
ticker = []
for filename in fileList:
print(filename)
df=pd.read_csv(filename, error_bad_lines=False)
ticker.append(df)
df.set_index("date", inplace=True)
df.rename(columns = {"close": ticker}, inplace = True)
df.drop(["Open","High","Low","Volume","Open interest"],axis = 1, inplace=True)
df=df.join(df, how="outer")
print(df.head())
df.to_csv('Merged.csv')
concatenate()
有人可以帮我吗? 无论如何,非常感谢您能给我的任何帮助! :)
答案 0 :(得分:0)
好的,所以我来回答这个问题,这是结局代码:
import os
import glob
import pandas as pd
import shutil
def concatenate(indir="C:/Users/xx/Desktop/Equity_Merton", outfile = "C:/Users/xx/Desktop/Equity_Merton/Merged.csv"):
os.chdir(indir)
fileList = glob.glob("*.csv")
ticker = []
main_df = pd.DataFrame()
for filename in fileList:
print(filename)
df=pd.read_csv(filename, sep = ";")
ticker.append(df)
df.set_index("Date", inplace=True)
df.rename(columns = {"Close": filename[0:len(filename) - 4]}, inplace = True)
# print(df[filename])
df.drop(["Open","High","Low","Volume","Open interest"],axis = 1, inplace=True)
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df, how='outer')
print(main_df.tail())
main_df.to_csv('Merton_Merged.csv')
shutil.move("Merton_Merged.csv", "../Merton_Merged.csv")
谢谢@yuca的帮助! 最后一个问题是一个简单的治疗问题...