pd.merge()操作顺序

2024-05-02 09:28:10 发布

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

我有两个数据帧共享同一个索引列full_idx

import pandas as pd
df1 = pd.DataFrame({'idx': [1, 2, 4, 8], 'A': ['a', 'b', 'c', 'd'], 'full_idx': ['Cust1', 'Cust2', 'Cust4', 'Cust8']})
df2 = pd.DataFrame({'idx': [2, 4, 9, 11], 'B': [99.1, 11, 13, 0], 'full_idx': ['Cust2', 'Cust4', 'Cust9', 'Cust11']})

我使用这个索引列来创建它的数字版本(idx),并将其设置为df的索引

df1 = df1.set_index("idx")
df2 = df2.set_index("idx")

每当我加入时,我更喜欢遍历索引,因为这些数据帧的大小相当大,只是我总是会遇到重复的列名。因此,在full_df1的情况下,full_idx是重复的。现在,如果我选择在full_idx (just like in full_df2`上加入,这个问题就会消失

我的问题是关于pd.merge()的操作顺序:在on=[]字段中有一列是否会覆盖索引联接,而是会基于on=[]字段中指定的公共列进行合并?通过分配on=[]列,我是否失去了基于索引性能提升的合并

full_df1 = pd.merge(df1, df2, right_index=True, left_index=True, sort=False)
full_df2 = pd.merge(df1, df2, right_index=True, left_index=True, on=["full_idx"], sort=False)

完整的df1:

     A full_idx_x     B full_idx_y
idx                               
2    b      Cust2  99.1      Cust2
4    c      Cust4  11.0      Cust4

完整的df2:

     A full_idx     B
idx                  
2    b    Cust2  99.1
4    c    Cust4  11.0