如何在Koalas中创建具有2个或更多条件验证的新列



我把这个栏设置为"翻转";在df3上使用3验证分类为"turn_pm","turn_am";或者"不知道",但我想知道是否存在"简单的方法"。为了达到相同的结果,比如对";使用if/elif/else或者类似的语句

这里是我使用的代码。

from databricks import koalas as ks
from databricks.koalas.config import set_option, reset_option
set_option("compute.ops_on_diff_frames", True)
#Turno PM
kdf.loc[(kdf['dot_agencia_origen'] == 'AGENCIA RM') & (kdf['dot_agencia_destino']!='AGENCIA RM') | (kdf['dot_agencia_origen'] == 'AGENCIA VALPARAISO') & (kdf['dot_agencia_destino']!='AGENCIA RM') & (kdf['dot_agencia_destino']!='AGENCIA VALPARAISO') | (kdf['dot_agencia_origen'] == 'AGENCIA RANCAGUA') & (kdf['dot_agencia_destino']!='AGENCIA RM') & (kdf['dot_agencia_destino']!='AGENCIA RANCAGUA'),'Turno']= 'Turno_PM'

#Turno AM
kdf.loc[(kdf['dot_agencia_origen'] == 'AGENCIA RM') & (kdf['dot_agencia_destino']=='AGENCIA RM') | (kdf['dot_agencia_origen'] == 'AGENCIA VALPARAISO') & (kdf['dot_agencia_destino']=='AGENCIA RM')|(kdf['dot_agencia_origen'] == 'AGENCIA RANCAGUA') & (kdf['dot_agencia_destino']=='AGENCIA RM'),'Turno']='Turno_AM'
#Regiones
kdf.loc[(df3['Turno'].isnull()),'Turno']='Regiones'

另一个解决方案->构造条件:

# Turno PM
cond1  = (df3['dot_agencia_destino'] != 'AGENCIA RM')
cond2  = False
cond2 |= (df3['dot_agencia_origen'] == 'AGENCIA RM')
cond2 |= (df3['dot_agencia_origen'] == 'AGENCIA VALPARAISO') & (df3['dot_agencia_destino']!='AGENCIA VALPARAISO')
cond2 |= (df3['dot_agencia_origen'] == 'AGENCIA RANCAGUA')   & (df3['dot_agencia_destino']!='AGENCIA RANCAGUA')
cond = cond1 & cond2
df3.loc[cond, 'Turno'] = 'Turno_PM'
# Turno AM
cond = True
cond &= (df3['dot_agencia_destino'] == 'AGENCIA RM')
cond &= (df3['dot_agencia_origen'].isin(['AGENCIA RM', 'AGENCIA VALPARAISO', 'AGENCIA RANCAGUA']))
df3.loc[cond, 'Turno'] = 'Turno_AM'
# N/A
df3['Turno'] = df3['Turno'].fillna('N/A')

最新更新