0

我已经使用 3 验证在 df3 上创建了“Turno”列以分类为“Turno_PM”、“Turno_AM”或“N/A”,但我想知道是否存在达到相同结果的“简单方法”,例如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'
4

1 回答 1

0

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

# 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')

于 2021-02-10T07:27:39.330 回答