Как добавить разные временные метки? - PullRequest
0 голосов
/ 09 января 2019

Я хочу добавить свои фреймы данных, которые представляют собой две разные временные метки.

Первый -

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 голосов
/ 09 января 2019

d1 начинается с индекса 0, тогда как d2 начинается с индекса 1. Вам нужно удалить индекс 0 из d2, чтобы ваша конкатенация работала

>>> 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
0 голосов
/ 09 января 2019

Панды добавят фрейм данных на основе индекса, если вы хотите добавить без индекса, который вы можете использовать:

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

С другой стороны, если вам нравится, как он добавляется, но вы хотите отфильтровать данные NaT, вы можете использовать

pd.concat([d1, d2], axis = 1).dropna()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...