Python:if条件下的怪异行为

2024-10-03 21:34:30 发布

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

今天,我发现我的python pandas行为异常。让我给你看下面的例子。首先,我导入pandas,并制作一个示例数据帧。你知道吗

>> import pandas as pd 
>> pd.__version__
'0.25.1'

>> df_test = pd.DataFrame([
    {'make': 'toyota', 'model': 'yaris', 'body': 'hatchback'},
    {'make': 'toyota', 'model': 'corolla', 'body': 'sedan'},
    {'make': 'toyota', 'model': 'rav 4', 'body': 'suv'},
    {'make': 'toyota', 'model': 'avensis', 'body': 'sedan'},
    {'make': 'toyota', 'model': 'avensis', 'body': 'combi'},
    {'make': 'toyota', 'model': 'avensis', 'body': 'mpv'},
    {'make': 'toyota', 'model': 'avensis', 'body': 'pickup'},
])
>> print(df_test)
     make    model       body
0  toyota    yaris  hatchback
1  toyota  corolla      sedan
2  toyota    rav 4        suv
3  toyota  avensis      sedan
4  toyota  avensis      combi
5  toyota  avensis        mpv
6  toyota  avensis     pickup

到目前为止还不错。但是现在,下面的代码有问题。你知道吗

>> def unify_body_for_toyota_avensis(row):
       if row['make']=='toyota' and row['model']=='avensis' and row['body'] in ['hatchback', 'mpv', 'pickup']:
           return 'combi'
       return row['body']

>> df_test['body'] = df_test.apply(lambda row: unify_body_for_toyota_avensis(row), axis=1)
File "<ipython-input-53-cd7640bc0c54>", line 2
  if row['make']=='toyota' and row['model']=='avensis' and row['body'] in ['hatchback', 'mpv', 'pickup']:
                                   ^
SyntaxError: invalid character in identifier

但是,当我从unify_body_for_toyota_avensis函数中删除第一个条件时,一切正常:

>> def unify_body_for_toyota_avensis(row):
       if row['model']=='avensis' and row['body'] in ['hatchback', 'mpv', 'pickup']:
           return 'combi'
       return row['body']

>> df_test['body'] = df_test.apply(lambda row: unify_body_for_toyota_avensis(row), axis=1)
>> print(df_test)
     make    model       body
0  toyota    yaris  hatchback
1  toyota  corolla      sedan
2  toyota    rav 4        suv
3  toyota  avensis      sedan
4  toyota  avensis      combi
5  toyota  avensis      combi
6  toyota  avensis      combi

拜托,你能帮帮我吗,我缺了什么?你知道吗


Tags: testdfformakemodelbodyrowmpv