2012-07-09 84 views
1

我有多个文件包含日期和测量值。他们的设置是相同的:将数据框与熊猫合并

YYYY MM DD val1 
YYYY MM DD val2 
YYYY MM DD val3 

我用下面的每个这些文件的读入DataFrame

for cur_file in file_list: 
    cur_df = pa.io.parsers.read_table(os.path.join(data_path, result) 
               , header=None 
               , sep='\s*' 
               , parse_dates=[[0,1, 2]] 
               , names=['day','month', 'hour', cur_file[:-4]] 
               , index_col=[0] 
               ) 

日期是不是在所有文件相同。有时会有一些重叠,但并非总是如此。

我可以在回路中通过

cur_df.plot() 

绘制每个单独的cur_df的。

在一个“大”的DataFrame中看起来好像将所有的cur_df都放在一起。既可以绘制图表,也可以稍后用于统计。考虑到他们的日期不同,这将如何完美地完成?有没有办法“合并”多个DataFrames,但是在仅发生在底层DataFrame中的日期做了什么?

我想我在寻找一个数据帧,看起来像这样:

YYYY MM DD val1(from1) NaN 
YYYY MM DD val2(from1) val2(from2) 
YYYY MM DD NaN   val3(from2) 

它将采取从VAL1之日起的第一行的日期戳,符合val1和val2的两个日期是基于val2的第3行中的日期

我查看了 cur_df.add(cur_df2) 追加了两个DataFrame。我不知道什么 cur_df.combine(cur_df2,...) 会做,特别是因为我不知道什么函数应该用作第二个参数。

感谢您的帮助, 干杯, 克劳斯

回答

1

从您的代码段,它看起来像解析日期值应为指数和每个数据帧都会有一个不同的列名右边的值?在这种情况下,我认为对DataFrame.combine_first的一次迭代调用应该可以做到。

另外,你是否也传递了“keep_date_col = True”?默认情况下,解析器应该在将多个日期组件解析为一个时抛出组件日期列(如果不是那么这是一个错误,请让我知道)。

最佳,

+0

畅,感谢您的快速回复。 'DataFrame.combine_first'确实帮了我,是的,'keep_date_col = True'表现得应该如此。 我正在通过'read_table'读取文件,该文件为我提供了一个DataFrame,并使用'DataFrame.combine_first'将日期粘在一起。 有没有办法来初始化DataFrame?现在我用if语句规避这个问题。 如果在数据文件中没有连续日期(日常数据)会怎么样?有没有办法使索引连续(更好每个DataFrame单独或最终大DataFrame)?或者这是不必要的(用于重采样)? 再次感谢, 克劳斯 – Claus 2012-07-10 15:04:36

+0

初始化DataFrame:将DataFrame()适用于你的情况? – 2012-07-11 16:11:06

+0

使事物连续:您应该能够直接使用resample – 2012-07-11 16:13:09