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'])
添加回答
舉報