我正在尝试将多个OHLC csv文件合并为一个文件。我在互联网上下载了一些数据,但索引部分重叠。数据可能如下所示:
<file1>
o,h,l,c,v,t
...
364.4,364.4,364.4,364.4,155.0,2019-01-01 10:59:59
364.4,364.59,364.4,364.59,371.0,2019-01-01 11:00:00
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:01
<file2>
o,h,l,c,v,t
364.4,364.59,364.4,364.59,1371.0,2019-01-01 11:00:00
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:01
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:02
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:03
...
<file3>
o,h,l,c,v,t
364.4,364.4,364.4,364.4,155.0,2019-01-01 12:00:00
364.4,364.59,364.4,364.59,1371.0,2019-01-01 12:00:01
...我需要的是。
<file_merged>
o,h,l,c,v,t
...
364.4,364.4,364.4,364.4,155.0,2019-01-01 10:59:59
364.4,364.59,364.4,364.59,371.0,2019-01-01 11:00:00
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:01
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:02
364.59,364.59,364.59,364.59,305.0,2019-01-01 11:00:03
...
364.4,364.4,364.4,364.4,155.0,2019-01-01 12:00:00
364.4,364.59,364.4,364.59,1371.0,2019-01-01 12:00:01
...我已经找到了一种巧妙的方法来将数据加载到一个对象中,但是我遗漏了需要将无序列表合并到一个有序数据帧中的最后部分,在这个部分中,双精度项被删除,数据被排序。Pd.merge(左,右,索引=‘t’)我想我可以在一个丑陋的循环中使用,但我想知道是否有更优雅的方法?这就是我到目前为止加载数据的方式(没有丑陋的循环):
datadir = r'/home/test'
files = [i for i in os.listdir(datadir) if os.path.isfile(os.path.join(datadir, i)) and i.startswith('AAPL_')]
datalist = [pd.read_csv(datadir + '/' + filename, index_col='t') for filename in files]提前感谢
发布于 2020-07-17 20:52:07
使用pathlib.Path.glob获取datadir中以AAPL_开头的所有文件的路径,并使用pd.read_csv以及可选参数parse_dates和index_col,最后使用pd.concat连接所有代码,并使用DataFrame.sort_index对< dfs >D9dfs>上的数据帧进行排序。
from pathlib import Path
dfs = [pd.read_csv(p, parse_dates=['t'])
for p in Path(datadir).glob(r'AAPL_*')]
df = pd.concat(dfs).drop_duplicates('t').set_index('t').sort_index()结果:
print(df)
o h l c v
t
2019-01-01 10:59:59 364.40 364.40 364.40 364.40 155.0
2019-01-01 11:00:00 364.40 364.59 364.40 364.59 1371.0
2019-01-01 11:00:01 364.59 364.59 364.59 364.59 305.0
2019-01-01 11:00:02 364.59 364.59 364.59 364.59 305.0
2019-01-01 11:00:03 364.59 364.59 364.59 364.59 305.0
2019-01-01 12:00:00 364.40 364.40 364.40 364.40 155.0
2019-01-01 12:00:01 364.40 364.59 364.40 364.59 1371.0https://stackoverflow.com/questions/62954023
复制相似问题