我在多个位置都有一系列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循环/功能吗?
答案 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)