我是一名SAS程序员,试图将我的代码翻译成python。下面显示的SAS代码检查多个if条件,如果为真,则do语句允许我更改多列中的值:
if state_text eq 'ALASKA' and country_code ne 'US' then do;
flag=1;
country_code='US';
state_code='AK';
end;
与pandas数据框架等价的是什么?我在获取代码时遇到了麻烦,仅适用于满足if条件的行。下面的代码完成了这项工作,但看起来非常重复,如果我首先列出country_code代码,那么对于其他两个代码,if语句不再为真。
df.loc[((df['state_text'] == 'ALASKA') & (df['country_code'] != 'US')), 'flag'] = '1'
df.loc[((df['state_text'] == 'ALASKA') & (df['country_code'] != 'US')), 'state_code'] = 'AK'
df.loc[((df['state_text'] == 'ALASKA') & (df['country_code'] != 'US')), 'country_code'] = 'US
您可以将列名传递给loc
:
df.loc[((df['state_text'] == 'ALASKA') & (df['country_code'] != 'US')),
['flag', 'state_text', 'country_code']
] = ['1', 'AK', 'US']
样本数据:
state_text country_code flag
0 ALASKA CA 0
1 OH US 0
代码后的输出:
state_text country_code flag
0 AK US 1
1 OH US 0