沿着时间序列索引连接pandas数据帧而不重复列

2024-06-28 19:05:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想连接两个pandas数据帧,每一个都有可能重叠的时间序列索引,也有可能重叠的列键。在

例如:

    old_close                                   new_close
             1TM    ABL  ...                    ABL    ANG    ...
Date                                Date
2009-06-05  100     564             1990-06-08  120    2533   
2009-06-04  102     585             1990-06-05  121    2531
2009-06-03  101     532             1990-06-04  123    2520
2009-06-02  99      540             1990-06-03  122    2519
2009-06-01  99      542             1990-06-02  121    2521
...

我想合并旧的“关闭”和“新的关闭”以形成一个新的数据帧,它包括两个数据帧中的所有数据,但不包括两个索引上的所有重复值。在

到目前为止,我是这样做的:

^{pr2}$

但这会导致重复的列(沿轴0的行)和多重索引。在


Tags: 数据pandasnewclosedate时间序列old
2条回答

假设您希望“排除两个索引上的所有重复值”,这应该可以工作

unique_indices = np.setdiff1d(np.unioin1d(old_close.index.to_list(), new_close.index.to_list()), 
                              np.intersect1d(old_close.index.to_list(), new_close.index.to_list()))
merged_close = pd.concat([old_close, new_close]).ix[unique_indices]

编辑:更新了唯一索引计算。现在删除所有重复索引

panda documentation

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
       keys=None, levels=None, names=None, verify_integrity=False)

verify_integrity: boolean, default False. Check whether the new concatenated axis contains duplicates. This can be very expensive relative to the actual data concatenation

你试过把那个参数设为真吗?在

编辑:

很抱歉,如果有重复,请验证完整性。 不管怎样,你可以试试看drop_duplicates()函数。在

另请看一看这个问题:

python pandas remove duplicate columns

相关问题 更多 >