如何在列中选择满足列中任一参数的特定行?

2024-09-30 20:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python学习pandas,所以我创建了一个简单的电子表格,其中包含了几部电影,并将其导入python。我如何选择动作片或喜剧片

到目前为止我已经试过了

df2=df[df['Genre']=='Action' or 'Comedy']

以及

df2=df[(df['Genre']=='Action') or (df['Genre']=='Comedy')]

不过,这是可行的

df2 = df[df['Genre']=='Action']
df2 = df2.append(df[df['Genre']=='Comedy'])

但我相信这是一种非正统的方式

有没有更简单或更干净的方法


Tags: or方法pandasdf电影方式action电子表格
3条回答

对于这种情况,我发现运算符.isin更容易理解,也更简洁:

df[df['Genre'].isin(['Action','Comedy'])]

这样,如果有其他条件,就不需要重复那么多次。例如:

df[df['Genre'].isin(['Action','Comedy','Drama','Romance','Kids'])]

比以下更好:

df[(df['Genre']=='Action') | (df['Genre']=='Comedy') | (df['Genre']=='Comedy') |
   (df['Genre']=='Romance') | (df['Genre']=='Kids')]

试试这个,你可以更自由地添加过滤项(类型),而不是链接更多的'或'子句

required_genres = ['Action', 'Comedy']

df[df['Genre'].isin(required_genres)]

显然,你可以用这个来串联更多的论点,来回答你的第二个问题:

df[(df['Genre'].isin(required_genres)) & (df['year'] <='2000')]

你可以做df[(df['Genre']=='Action') | (df['Genre']=='Comedy') & (df['year'] <='2000')]

相关问题 更多 >