2 回答

TA贡献2051条经验 获得超10个赞
您的函数time_calc将 aDataFrame作为参数。在部分中df_entry['TimeCode'] == 'R',当您将整个列与标量值进行比较时,您实际上计算了一个系列。
当您and对此使用逻辑时,python 会尝试计算boolean系列的等效项,从而引发异常。您实际打算做的是使用向量运算或循环遍历行。
固定代码的示例可以是(未测试):
def time_calc(df):
df.loc[df['TimeCode'] == 'R' & df['Workrule'] == 'C', 'TimeCode'] = 'A'
df.loc[df['TimeCode'].isin(['O', 'L']), 'TimeCode'] = 'O'

TA贡献1848条经验 获得超6个赞
您正在将整个列与单个值进行比较df_entry['TimeCode'] =='R'。您需要逐行迭代以比较单列值或更好地使用np.where
def time_calc(df_entry):
df_entry['TimeCode'] = np.where((df_entry['TimeCode'] == 'R') and (df_entry['Workrule'] == 'C'), 'A', df_entry['TimeCode'])
df_entry['TimeCode'] = np.where(df_entry['TimeCode'] in ['O','L'], 'O', df_entry['TimeCode'])
添加回答
举报