在熊猫中对齐时间序列

时间:2016-01-16 14:05:16

标签: python pandas

我有2个时间序列。

df=pd.DataFrame([
        ['1/10/12',10],
        ['1/11/12',11],
        ['1/12/12',13],
        ['1/14/12',12],
        ],
        columns=['Time','n'])
df.index=pd.to_datetime(df['Time'])

df1=pd.DataFrame([
        ['1/13/12',88],
        ],columns=['Time','n']
        )
df1.index=pd.to_datetime(df1['Time'])

我正在尝试对齐时间序列,以便索引按顺序排列。我猜reindex_like是我需要的,但不知道如何使用它。

这是我想要的输出

    Time   n
0  1/10/12  10
1  1/11/12  11
2  1/12/12  13
3  1/13/12  88
4  1/14/12  12

2 个答案:

答案 0 :(得分:1)

以下是您的需求:

df.append(df1).sort().reset_index(drop=True)

如果您需要将更多部分组合在一起,则使用pd.concat(<names of all your dataframes as a list>)会更有效。

P.S。您的代码有点多余:如果您不需要,则不需要将Time转换为索引。您可以根据任何列对值进行排序,如下所示:

import pandas as pd

df=pd.DataFrame([
        ['1/10/12',10],
        ['1/11/12',11],
        ['1/12/12',13],
        ['1/14/12',12],
        ],
        columns=['Time','n'])

df1=pd.DataFrame([
        ['1/13/12',88],
        ],columns=['Time','n']
        )

df.append(df1).sort_values('Time')

答案 1 :(得分:1)

您可以使用concatsort_indexreset_index

df = pd.concat([df,df1]).sort_index().reset_index(drop=True)
print df

      Time   n
0  1/10/12  10
1  1/11/12  11
2  1/12/12  13
3  1/13/12  88
4  1/14/12  12

或者您可以使用ordered_merge

print pd.ordered_merge(df, df1)

      Time   n
0  1/10/12  10
1  1/11/12  11
2  1/12/12  13
3  1/13/12  88
4  1/14/12  12