如何附加不同的时间戳数据帧?

时间:2019-01-09 01:25:34

标签: python dataframe

我想附加两个不同时间戳的数据框。

第一个是

d1
0   2000-01-05 00:00:00+00:00
1   2000-01-06 00:00:00+00:00
2   2000-01-07 00:00:00+00:00
3   2000-01-10 00:00:00+00:00
4   2000-01-11 00:00:00+00:00

第二个是

d2
1   2000-01-06 00:00:00+00:00
2   2000-01-07 00:00:00+00:00
3   2000-01-10 00:00:00+00:00
4   2000-01-11 00:00:00+00:00
5   2000-01-12 00:00:00+00:00

但是pd.concat([d1, d2], axis = 1)的结果是

d1  d2
0   2000-01-05 00:00:00+00:00   NaT
1   2000-01-06 00:00:00+00:00   2000-01-06 00:00:00+00:00
2   2000-01-07 00:00:00+00:00   2000-01-07 00:00:00+00:00
3   2000-01-10 00:00:00+00:00   2000-01-10 00:00:00+00:00
4   2000-01-11 00:00:00+00:00   2000-01-11 00:00:00+00:00

如何在没有NaT的情况下附加这两个数据框?

2 个答案:

答案 0 :(得分:1)

pandas将根据索引附加数据框,如果您要附加而没有索引,则可能要使用:

pd.concat([d1, d2], axis = 1,ignore_index=True)

另一方面,如果您喜欢附加方式,但是想要过滤NaT数据,则可以使用

pd.concat([d1, d2], axis = 1).dropna()

答案 1 :(得分:0)

d1从索引0开始,而d2从索引1开始。您需要从d2删除0索引,以使串联工作

>>> d1 = pd.DataFrame([datetime(2000, 1, 5), datetime(2000, 1, 6), datetime(2000, 1, 7),
                   datetime(2000, 1, 8), datetime(2000, 1, 10)])
>>> d2 = pd.DataFrame([              pd.NaT, datetime(2000, 1, 5), datetime(2000, 1, 6),
                   datetime(2000, 1, 7), datetime(2000, 1, 8), datetime(2000, 1, 10)])

# Shifts index back while removing NaT value
>>> d2 = d2.shift(-1)[:-1]

>>> new_df = pd.concat((d1, d2), axis=1)

>>> new_df
           0          0
0 2000-01-05 2000-01-05
1 2000-01-06 2000-01-06
2 2000-01-07 2000-01-07
3 2000-01-08 2000-01-08
4 2000-01-10 2000-01-10