Использование numpy.where
:
m = df['diff_flag'].isin(['zero','less than 6'])
df['new_diff'] = np.where(m, 'Data Error', df['time_diff'] - 6)
Или:
m1 = df['time_diff'] == 0
m2 = df['time_diff'] < 6
df['new_diff'] = np.where(m1 | m2, 'Data Error', df['time_diff'] - 6)
Или:
m = df['diff_flag'] == 'no issue'
df['new_diff'] = np.where(m, df['time_diff'] - 6, 'Data Error')
print (df)
code time_diff diff_flag quantity new_diff
0 123 0 zero 0.45 Data Error
1 124 5 less than 6 0.80 Data Error
2 125 8 no issue 0.78 2
3 126 18 no issue 2.78 12
4 127 28 no issue 4.78 22