我有三个带有价格数据的符号,并成功导入/修改了价格数据,如下所示:
def read_files():
assets = ['ES','ZN','VX']
path = r"C:\Users\cost9\OneDrive\Documents\PYTHON\Exported_Data\%s\*.csv"
files = []
for a in assets:
files.extend(glob.iglob(path % a))
df_list = [pd.read_csv(f) for f in files]
for b in df_list:
b['Returns'] = b['Close'].pct_change()
现在,在创建上面的“退货”列后,示例数据如下所示:
Ticker Date/Time Close Returns
ES U7 3/14/2017 5:29 2365.5
ES U7 3/14/2017 6:29 2362.25 -0.001373917
ES U7 3/14/2017 8:29 2355 -0.003069108
ES U7 3/14/2017 9:29 2359.25 0.001804671
ES U7 3/14/2017 10:29 2356 -0.001377556
ES U7 3/14/2017 11:29 2358 0.000848896
ES U7 3/14/2017 12:29 2358.5 0.000212044
ES U7 3/14/2017 13:29 2360.25 0.000741997
ES U7 3/14/2017 14:29 2360.5 0.000105921
ES U7 3/14/2017 21:29 2361.5 0.000423639
ES U7 3/14/2017 22:29 2363.5 0.000846919
ES U7 3/14/2017 23:29 2363.75 0.000105775
ES U7 3/15/2017 0:29 2364.5 0.000317292
ES U7 3/15/2017 1:29 2363.5 -0.000422922
三个符号的CSV文件中的每一个都是这样的。现在我想将这三个DataFrame中的每一个移动到单独的文件夹中:
end_path_to_csv = "C:\\Users\\cost9\\OneDrive\\Documents\\PYTHON\\Daily Tasks\\Individual Trading\\%s\CSV\\15M\\Trend_Identifier\\blah.csv"
for c in df_list:
c.to_csv(path_or_buf = end_path_to_csv % assets)
我收到此错误:
IOError: [Errno 2] No such file or directory: "C:\\Users\\cost9\\OneDrive\\Documents\\PYTHON\\Daily Tasks\\Individual Trading\\['ES', 'ZN', 'VX']\\CSV\\15M\\Trend_Identifier\\blah.csv"
不幸的是,我无法将'assets'和'df_list'(Dataframe)值转换为字典 - 如果我这样做,那么DataFrames将不会被调用,并且没有可用的csv数据。
我有三个文件夹,每个文件夹除了文件目录中的符号外完全相同,例如:
"C:\\Users\\cost9\\OneDrive\\Documents\\PYTHON\\Daily Tasks\\Individual Trading\\ES\\CSV\\15M\\Trend_Identifier\\blah.csv"
这将是'ES'符号,如果我指的是那个DataFrame,'VX'将替换'ES',等等。
如何将每个数据框保存到相应的文件夹中?
答案 0 :(得分:2)
将zip
assets
和df_list
放在一起并迭代它们。
assets = ['ES','ZN','VX']
dst_path = ...
for p, c in zip(assets, df_list):
c.to_csv(dst_path % p)
答案 1 :(得分:1)
您正在循环遍历df_list,但路径在每次循环迭代中都是相同的。请尝试:
end_path_to_csv = "C:\\Users\\cost9\\OneDrive\\Documents\\PYTHON\\Daily Tasks\\Individual Trading\\%s\CSV\\15M\\Trend_Identifier\\blah.csv"
for idx, c in enumerate(df_list):
c.to_csv(path_or_buf = end_path_to_csv % assets[idx])