响应:
我需要基于现有的“时间”列创建“响应”列。我的响应变量必须在1s到60s和240s到300s的时间值中显示“否”。并对所有剩余值显示“是”。
我尝试了下面的代码,但是无论给定条件如何,它仅对所有“时间”值显示“否”。
数据集:
dataset['Y'] = np.where(dataset["Time"] > 60 & (dataset["Time"] < 240 ), 'yes', 'no')
答案 0 :(得分:0)
def label(row):
if row['Time'] >= 1 and row['Time'] < 60:
return("no")
elif row['Time'] >= 240 and row['Time'] < 300:
return("no")
else:
return("yes")
dataset['Y'] = dataset.apply(lambda row: label(row), axis=1)
在您的代码中,您的条件错误,因此无法正常工作。
答案 1 :(得分:0)
我倾向于做以下事情:
dataset['Y'] = (dataset['Time'] >= 1) & (dataset['Time'] <= 4) | (dataset['Time'] > 5)
请注意,这会将布尔值填充到“ Y”列。如果最重要的是它们是/否,则可以将其更改为
dataset['Y'] = ((dataset['Time'] >= 1) & (dataset['Time'] <= 4) | (dataset['Time'] > 5)).replace({True: 'Yes', False: 'No'})
还请注意,我没有将时间间隔转换为秒,而是将时间间隔转换为分钟,但是出于可读性考虑,您可能希望这样做有所不同。