Python pandas

时间:2017-07-14 14:08:20

标签: python pandas

假设我有这个数据帧(称之为df): enter image description here

以下是我要对数据框做的事情: 1.如果每个id有两行,请选择与Col1和Col2匹配的行。 2.如果id只有一行,则选择该行,即使Col1和Col2不匹配。

df = df[df['Col1'] == df['Col2']]

此代码错误,因为它不满足上述要求2。这是我想要的结果:enter image description here

如果有人能向我解释如何实现这一目标,我将非常感激! 谢谢。

1 个答案:

答案 0 :(得分:2)

假设id列中只有长度为2的唯一且重复的值。

然后使用duplicated选择所有重复项~进行反向掩码 - 选择所有唯一行:

m1 = df['Col1'] == df['Col2']
m2 = df['id'].duplicated(keep=False)
df = df[(m1 & m2) | ~m2]
print (df)
     Col1   Col2  Col3 id
0   Pizza  Pizza   100  1
3   Pizza  Pizza   300  2
4   Ramen  Ramen   230  3
6   Ramen  Pizza    13  4
8   Pizza  Pizza    13  5
10  Ramen  Ramen    30  6
11  Pizza  Ramen    45  7