将DataFrame与pandas合并

时间:2012-07-09 15:51:49

标签: python pandas io

我有多个包含日期和测量值的文件。他们的设置完全相同:

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
cur_df.plot()

在循环中。

将所有cur_df放在一个“大”DataFrame中似乎是个好主意。既可用于绘图,也可用于以后的统计。考虑到它们的日期不同,理想情况下如何做到这一点?有没有办法“合并”多个DataFrame,但是只在一个底层DataFrame中发生的日期做了什么?

我想我正在寻找一个如下所示的数据框:

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

从val1的日期起第一行中的日期戳,第二行中val1和val2的日期相同,并且第3行的日期将基于val2

我调查了一下     cur_df.add(cur_df2) 附加两个DataFrame。我不确定是什么     cur_df.combine(cur_df2,...) 会这样做,特别是因为我不确定应该使用什么函数作为第二个参数。

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

1 个答案:

答案 0 :(得分:1)

从您的代码段看起来,解析后的日期值应该是索引,每个DataFrame将具有不同列名的值吗?在这种情况下,我认为对DataFrame.combine_first的迭代调用应该可以解决问题。

另外,你也传递“keep_date_col = True”吗?默认情况下,在将多个日期组件解析为一个时,解析器应该丢弃组件日期列(如果不是那么这是一个bug,请告诉我)。

最佳,