У меня есть 3 кадра данных, которые выглядят следующим образом:
>>> a
val1
2018-03-04 12:40:00 1
2018-03-04 12:40:01 2
2018-03-04 12:40:02 3
>>> b
val2
2018-03-04 12:40:00 5
2018-03-04 12:40:01 2
2018-03-04 12:40:02 1
>>> c
val2
2018-03-04 12:40:03 -3
2018-03-04 12:40:04 2
2018-03-04 12:40:05 6
Я хотел бы объединить их в один кадр данных, который выглядит следующим образом:
>>> df
val1 val2
2018-03-04 12:40:00 1 5
2018-03-04 12:40:01 2 2
2018-03-04 12:40:02 3 1
2018-03-04 12:40:03 NaN -3
2018-03-04 12:40:04 NaN 2
2018-03-04 12:40:05 NaN 6
Таким образом, любые значения с похожим индексом объединяются, а значения с индексом, который в данный момент не существует, просто добавляются к этому индексу.
Использование join
не работает:
>>> a.join(c)
val1 val2
2018-03-04 12:40:00 1 NaN
2018-03-04 12:40:01 2 NaN
2018-03-04 12:40:02 3 NaN
Использование concat
в сочетании с join
по-прежнему не работает, и просто показывает, что join
все равно не справится с работой, поскольку вместо замены NaN
создается еще одинcolumn
>>> pd.concat([a,c]).join(b, lsuffix='_x', rsuffix='_y')
val1 val2_x val2_y
2018-03-04 12:40:00 1.0 NaN 5.0
2018-03-04 12:40:01 2.0 NaN 2.0
2018-03-04 12:40:02 3.0 NaN 1.0
2018-03-04 12:40:03 NaN -3.0 NaN
2018-03-04 12:40:04 NaN 2.0 NaN
2018-03-04 12:40:05 NaN 6.0 NaN
Но даже в этом случае в моем случае невозможно определить, какой фрейм данных содержит индексы, которые не лежат в других фреймах данных, а какой имеет индексы, аналогичные другим фреймам данных, поэтому решение будетнужно быть общим.
Я способен сделать это в Python, но я хотел знать, было ли решение для панд первым, так как панды более эффективны и быстрее.