【问题标题】:Ordered merge of two timeseries (each with unique DateTimeIndex) and ffilling?两个时间序列(每个都有唯一的 DateTimeIndex)和填充的有序合并?
【发布时间】:2016-01-15 03:15:40
【问题描述】:
time                       price
2015-11-18 00:00:00.000    42.02
2015-11-18 00:00:00.021    42.01
2015-11-18 00:00:00.126    42.01
2015-11-18 00:00:00.127    42.02
Name: price, dtype: float64

time                       price
2015-11-18 00:00:00.000    106.82
2015-11-18 00:00:00.020    106.82
2015-11-18 00:00:00.021    106.82
2015-11-18 00:00:00.207    106.82
2015-11-18 00:00:00.325    106.82
Name: price, dtype: float64

我想将这两个唯一的 DataFrame(假设一个是 stock1,一个是 stock2)合并为一个多索引(由 stock1 和 stock2)DataFrame,如下所示:

                            STOCK1          STOCK2
time                       price
2015-11-18 00:00:00.000    106.82           42.02
2015-11-18 00:00:00.126    106.82           42.01
2015-11-18 00:00:00.127    106.82           42.02
2015-11-18 00:00:00.020    106.82           42.02
2015-11-18 00:00:00.021    106.82           42.01
2015-11-18 00:00:00.021    106.82           42.01   
2015-11-18 00:00:00.207    106.82           42.01   
2015-11-18 00:00:00.325    106.82           42.01

当我尝试先创建多索引时,我得到了

ValueError: 无法从重复的轴重新索引

也尝试了ordered_merge,但没有得到正确的结果。

首先通过联合重新索引 Stock1 和 Stock2 然后对它们进行多重索引是否有意义?实现结果的最佳过程是什么?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我在阅读时丢失了日期信息,但这应该可以工作

    In [37]: df = pd.concat([s1, s2], keys=['stock1', 'stock2'], axis=1).fillna(method='ffill')
    
    In [38]: df.columns = pd.MultiIndex.from_product(['price', df.columns])
    
    In [39]: df
    Out[39]:
                  price
                 stock1  stock2
    00:00:00.000  42.02  106.82
    00:00:00.020  42.02  106.82
    00:00:00.021  42.01  106.82
    00:00:00.126  42.01  106.82
    00:00:00.127  42.02  106.82
    00:00:00.207  42.02  106.82
    00:00:00.325  42.02  106.82
    

    concat 基本上在这里执行索引标签的外连接/联合。 由于它们共享最外层,因此我将列级别从您的输入方式中翻转过来。如果你真的想要它,就像你的例子一样,把最后一个翻转到pd.MultiIndex.from_product([df.columns, 'price'])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2018-07-03
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多