根据下面的数据框(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
...
答案 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
鉴于df2
和df1
,您可以对索引执行设置差异操作,如下所示:
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)