如何在数据框架中为满足特定if条件的行做多件事(例如,更改多列中的值)?



我是一名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

相关内容

  • 没有找到相关文章

最新更新