Pandas发送多个DataFrames to_csv

时间:2017-11-14 01:05:20

标签: python pandas

我有三个带有价格数据的符号,并成功导入/修改了价格数据,如下所示:

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',等等。

如何将每个数据框保存到相应的文件夹中?

2 个答案:

答案 0 :(得分:2)

zip assetsdf_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])