如何确保两个pandas数据帧仅覆盖相同的日期

时间:2016-04-02 17:06:34

标签: python pandas

我创建了2个pandas DataFrames,其数据来自Yahoo Finance,我需要确保它们的长度相同,以至于它们都覆盖了相同的日期 - 如果一个比另一个短,那么就丢掉任何多余的较长的数据。

Courses

所以说,例如,'g'DataFrame仅包含2012年以后的数据,但'o'DataFrame包含从2005年开始日期开始的所有数据。

如何比较两者并删除较长的信息,以便它们在2012年的同一天开始?

我已经考虑过加入,合并,连接等等 - 但我不想以任何方式实际组合这两个DataFrame,我只是想剥离一个因此它们的长度相同并且在索引上包含相同的日期。我似乎找不到任何简单的方法来做到这一点。

有人可以提出一个简单的方法吗?

2 个答案:

答案 0 :(得分:1)

我认为最好采用索引值的intersection

In [11]:
intersect = o.index.intersection(g.index)
intersect

Out[11]:
DatetimeIndex(['2011-03-03', '2011-03-04', '2011-03-07', '2011-03-08',
               '2011-03-09', '2011-03-10', '2011-03-11', '2011-03-14',
               '2011-03-15', '2011-03-16',
               ...
               '2016-03-17', '2016-03-18', '2016-03-21', '2016-03-22',
               '2016-03-23', '2016-03-24', '2016-03-28', '2016-03-29',
               '2016-03-30', '2016-03-31'],
              dtype='datetime64[ns]', name='Date', length=1278, freq=None)

您可以使用上述内容对o进行索引:o.loc[intersect]只返回og

中存在的行

答案 1 :(得分:1)

鉴于您不想合并数据框,这将修剪顶部和底部日期以匹配:

test.collect('status').length;