【发布时间】:2015-06-15 13:53:05
【问题描述】:
您好,我已经使用此代码创建了一个 dataFrame 字典
import os
import pandas
import glob
path="G:\my_dir\*"
dataList={}
for files in glob.glob(path):
dataList[files]=(read_csv(files,sep=";",index_col='Date'))
字典中存在的不同数据帧具有不同的时间样本。 dataFrame(A) 的一个例子是
Date Volume Value
2014-01-04 06:00:02 6062 108000.0
2014-01-04 06:06:05 6062 107200.0
2014-01-04 06:12:07 6062 97400.0
2014-01-04 06:18:10 6062 99200.0
2014-01-04 06:24:12 6062 91300.0
2014-01-04 06:30:14 6062 84100.0
2014-01-04 06:36:17 6062 57000.0
dataFrame(B) 的例子是
Date Volume Value
2014-01-04 05:52:50 6062 4.7
2014-01-04 05:58:53 6062 4.7
2014-01-04 06:04:56 6062 4.9
2014-01-04 06:10:58 6062 5.1
2014-01-04 06:17:01 6062 5.2
2014-01-04 06:23:03 6062 5.2
2014-01-04 06:29:05 6062 5.5
2014-01-04 06:35:08 6062 5.5
不同的数据框的行数不同。我想像这样将不同的数据框合并为一个:
Data Volume B A Value(DataframeN)
2014/04/01 05:52:50 6062 4.70 NaN
2014/04/01 05:58:53 6062 4.70 NaN
2014/04/01 06:04:56 6062 4.90 107465.51
2014/04/01 06:10:58 6062 5.10 100652.60
2014/04/01 06:17:01 6062 5.20 98899.57
2014/04/01 06:23:03 6062 5.20 92618.56
2014/04/01 06:29:05 6062 5.50 85301.73
2014/04/01 06:35:08 6062 5.50 61523.06
我在 Matlab 中使用命令很容易做到这一点
ts_A=timeseries(ValueA,datenum(DateA));
ts_B=timeseries(ValueB,datenum(DateB));
res_A=resample(ts_A,datenum(DateB));
我必须对几组 csv 文件执行此操作,因此我想使用 python 自动化该过程。
Tnx
【问题讨论】:
-
append()或concat()。相当标准,请参阅文档。 -
concat()我认为不会重新采样。这些值具有不同的时间采样,它们需要使用线性方法进行插值。 -
你提供的关于你想要你的结果的例子并没有真正告诉我数据框最终应该是什么样子,你能发布一个更详细的例子吗?
-
编写的代码实际上不会运行(您从不导入
read_csv,并且您发布的DataFrames与运行代码时应该得到的不匹配(Date应该是索引,但您将其显示为列)。如果您发布您使用的确切代码会很有帮助。 -
@LorenzoBottaccioli 如果您按照编写的方式运行代码,您将得到
NameError: name 'read_csv' is not defined。
标签: python csv pandas resampling merging-data