我有一个随时间变化的动作数据集,其中有一个属性’Hour’(包含从0到23的值)。现在我想创建另一个属性,假设为’PartOfDay’,将24小时分为4个部分。对于’Hour’值在0到5之间的元组,’PartOfDay’的值应为1;如果’Hour’值在[6,11]之间,则’PartOfDay’的值应为2;…我该怎么做呢?
实现这个功能的代码如下:
train['PartOfDay']=1train.loc[(train.Hour>=6) & (train.hour<=11),'PartOfDay']=2train.loc[(train.Hour>=12) & (train.hour<=17),'PartOfDay']=3train.loc[(train.Hour>=18) & (train.hour<=23),'PartOfDay']=4
但这看起来不太美观,如果可能的话,我想知道有没有更优雅的方法
感谢大家的支持!!
回答:
虽然不清楚train.loc代表什么,但解决您问题的通用方法是使用模运算来设置右侧的值:
1 + int(train.Hour / 6)