如何将DataFrame与其他DataFrame列进行比较?

时间:2018-05-06 12:52:11

标签: python pandas

我有两个不同的DataFrame。 df是完整的,sample用于比较。这是我的数据:

sample.tail()
   T1  C   C1   C2   C3
0   1  5  0.0  7.0  5.0

df.tail()
   T1  T2  C   C1   C2   C3
0   1   0  5  4.0  6.0  6.0
1   0   0  5  5.0  4.0  6.0
2   0   1  7  5.0  5.0  4.0
3   1   1  0  7.0  5.0  5.0
4   1   1  5  0.0  7.0  5.0

我从sample df中选择了一些列,并尝试在df中找到与sample

匹配的值

这是我到目前为止所做的,但没有运气:

cols = sample.columns
df = df[df[cols] == sample[cols]]

我收到以下错误:

  

ValueError:只能比较标记相同的DataFrame对象

请帮助我找到解决方法吗?

编辑:预期输出

df.tail()
   T1  T2  C   C1   C2   C3
0   1   0  5  0.0  7.0  5.0
21  1   1  5  0.0  7.0  5.0
27  1   0  5  0.0  7.0  5.0
34  1   1  5  0.0  7.0  5.0
42  1   1  5  0.0  7.0  5.0
47  1   0  5  0.0  7.0  5.0
51  1   1  5  0.0  7.0  5.0

您可以看到所有数据都与T2之外的样本数据帧匹配。这是我的预期输出

由于

1 个答案:

答案 0 :(得分:1)

使用pd.Index.intersection,您可以使用

cols = sample.columns.intersection(df.columns)
df[df[cols].apply(tuple, axis=1).isin(sample[cols].apply(tuple, axis=1))]