根据两个条件在python中的数据框中选择行

时间:2017-11-17 22:18:23

标签: python pandas dataframe

根据下面的数据框(1),我希望创建一个数据框(2),其中y或z等于2.有没有办法方便地做到这一点?

如果我要创建一个只包含来自dataframe(1)但不包含dataframe(2)的行的数据帧(3),我应该如何处理它?<​​/ p>

    id  x  y  z 
    0 324  1  2
    1 213  1  1
    2 529  2  1
    3 347  3  2
    4 109  2  2

...

3 个答案:

答案 0 :(得分:2)

df[df[['y','z']].eq(2).any(1)]
Out[1205]: 
   id    x  y  z
0   0  324  1  2
2   2  529  2  1
3   3  347  3  2
4   4  109  2  2

答案 1 :(得分:1)

您可以使用以下条件轻松创建df2

df2 = df1[df1.y.eq(2) | df1.z.eq(2)]

df2
      x  y  z
id           
0   324  1  2
2   529  2  1
3   347  3  2
4   109  2  2

鉴于df2df1,您可以对索引执行设置差异操作,如下所示:

df3 = df1.iloc[df1.index.difference(df2.index)]

df3 
      x  y  z
id           
1   213  1  1

答案 2 :(得分:0)

您可以执行以下操作:

class Question(models.Model):
    # ... code
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='question', null=True, blank=True)

class Upvote(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

结果:

import pandas as pd

df = pd.read_csv('data.csv')
df2 = df[(df.y == 2) | (df.z == 2)]

print(df2)