Pandas读取多个CSV文件,计算每个文件中列的百分比变化

时间:2017-11-13 00:43:19

标签: python pandas dataframe

我在多个位置都有一系列CSV文件,但所有文件夹的格式都相同,其中文件夹名称的唯一区别是所使用的资产/符号。因此,我尝试使用通配符(%资产)搜索每个文件夹以及该文件夹中的最新文件。然后,我想计算关闭'关闭'每个资产在其自己的单独DataFrame中的逐个句点。

每个文件都是这样的:

Ticker  Date/Time   Close
ES U7   3/14/2017 4:44  2365.5
ES U7   3/14/2017 6:14  2360
ES U7   3/14/2017 6:29  2362.25
ES U7   3/14/2017 7:44  2361.25
ES U7   3/14/2017 7:59  2359.25
ES U7   3/14/2017 8:14  2357.25
ES U7   3/14/2017 8:29  2355
ES U7   3/14/2017 8:44  2353.75
ES U7   3/14/2017 8:59  2354.75
ES U7   3/14/2017 9:14  2354.5
ES U7   3/14/2017 9:29  2359.25
ES U7   3/14/2017 9:44  2358.5
ES U7   3/14/2017 9:59  2359
ES U7   3/14/2017 10:14 2355.5

我的下面的代码正在尝试。读取每个csv文件(转换为dataframe),然后b。计算关闭'关闭'柱。所以我希望这段代码能够为“VX'”' ES'提取每个文件。和' ZN'符号:

def read_files():

    Assets = ['ZN','VX','ES']

    path = r"C:\Users\cost9\OneDrive\Documents\PYTHON\Exported_Data\%s\*.csv" % Assets
    allfiles = (max(glob.iglob(path), key=os.path.getctime))

    list_ = []

    for file_ in allFiles:
        df1 = pd.read_csv(file_,index_col=None)
        list_.append(df)    

    for asset in assets:
        df1['Returns'] = Asset['Close'].pct_change() 

我在' allfiles'定义:

ValueError: max() arg is an empty sequence 

有人可以协助我在多个符号中应用for循环/功能吗?

1 个答案:

答案 0 :(得分:1)

这里的主要问题是您如何阅读文件。如果您要加载每个文件,您可能不想在那里使用max之类的内容。此外,string % Assets将按原样插入列表的字符串化版本,而不会像您期望的那样进行任何复杂的替换。

assets = ['ZN','VX','ES']
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]
df = pd.concat(df_list)