比较不同数据框的列

时间:2020-07-16 11:43:47

标签: python pandas numpy

我有两个要合并的DataFrame,但是我更希望检查两个df中是否存在一列,每行中的值是否完全相同。

对于基因融合,我在您看到形状的注释中尝试了几种解决方案

df = pd.concat([df_b, df_c], axis=1, join='inner')          # (245131, 40)
df = pd.concat([df_b, df_c], axis=1).reindex(df_b.index)    # (245131, 40)
df = pd.merge(df_b, df_c, on=['client_id'], how='inner')    # (420707, 39)
df = pd.concat([df_b, df_c], axis=1)                        # (245131, 40)

原始df_c是(245131, 14),而df_b是(245131, 26) 据此,我假定client_id列具有确切的值,因为在三种方法中,我的形状为245131行。

  1. 我想比较new_df中的client_id,并使用.loc进行尝试,但没有成功。也尝试过df.rename(columns={ df.columns[20]: "client_id_1" }, inplace=True),但将其重命名为两列

我尝试过

df_test = df_c.client_id
df_test.append(df_b.client_id, ignore_index=True)

但是我只收到一个索引和一个client_id列,但形状显示为245131行。

  1. 如果我可以确定值完全相同,是否应该将client_id放在一个df中,然后执行concat / merge?这样我就可以得到(245131,39)的正确形状

是否有mangle_dupe_cols命令用于合并或比较,例如read_csv?

1 个答案:

答案 0 :(得分:0)

克里斯,如果您希望检查2个单独的数据帧的2列是否完全相同,则可以尝试以下操作:

tuple(df1['col'].values) == tuple(df2['col'].values)

这应该返回布尔值

如果要合并2个数据框,请确保感兴趣的列的所有行都具有唯一值,因为重复将导致添加行

如果要沿轴连接数据框,请使用concat