当前位置: 代码迷 >> python >> 正确的IF语句python
  详细解决方案

正确的IF语句python

热度:94   发布时间:2023-07-16 11:14:48.0

嗨,我想从我的数据框中选择某些数据,如下所示。 不知何故,我的If语句无法正常工作并选择,例如,代替6M和6M3M的所有可能就是6M,3M和6M3M。 我想玩if语句。 该代码如下所示:

import pandas as pd

df = pd.DataFrame([
        ['Alex', 'Germany', '6M', 28, 'Surfer'],        
        ['Paul', 'Germany', '6M', 25,  'Surfer'],        
        ['Carly', 'Germany', '6M', 22,  'Surfer'],          
        ['Richard', 'Germany', '6M', 20,  'Surfer'],          
        ['Lee', 'UK', '6M3M', 22,  'Kite'],       
        ['Bob', 'UK', '6M3M', 23,  'Kite'],       
        ['Judith', 'UK', '6M3M', 29,  'Kite'],       
        ['Stephan', 'Spain', '3M', 29,  'Basketball'],       
        ['Wendy', 'Spain', '3M', 23,  'Basketball'],       
        ['Dennis', 'Spain', '3M', 25,  'Basketball'],
        ['Tucker', 'Germany', '3M', 22,  'Basketball'],        
        ['Paula', 'Germany', '3M', 21,  'Basketball'],          

        ], columns=['Name', 'Country', 'Course', 'Age', 'Sport'])

for index, row in df.iterrows():
        if (row['Country'] == 'Germany') or (row['Country'] == 'UK') or (row['Course'] == '6M') or (row['Course'] == '6M3M'):
        print(row['Name'], row['Country'], row['Age'], row['Sport'], row['Course'])  

我的输出看起来像:

Alex Germany 28 Surfer 6M
Paul Germany 25 Surfer 6M
Carly Germany 22 Surfer 6M
Richard Germany 20 Surfer 6M
Lee UK 22 Kite 6M3M
Bob UK 23 Kite 6M3M
Judith UK 29 Kite 6M3M
Tucker Germany 22 Basketball 3M
Paula Germany 21 Basketball 3M  

但我只想拥有:

Alex Germany 28 Surfer 6M
Paul Germany 25 Surfer 6M
Carly Germany 22 Surfer 6M
Richard Germany 20 Surfer 6M
Lee UK 22 Kite 6M3M
Bob UK 23 Kite 6M3M
Judith UK 29 Kite 6M3M

您的if逻辑不正确。 它应该是:

if row['Country'] in {'Germany', 'UK'} and row['Course'] in {'6M', '6M3M'}:
        print(row['Name'], row['Country'], row['Age'], row['Sport'], row['Course'])

查看 ,以获取有关在if语句中使用in的解释。