我想附加两个不同时间戳的数据框。
第一个是
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的情况下附加这两个数据框?
答案 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