创建一个新的“对象”列

时间:2017-02-21 06:53:06

标签: python pandas lambda conditional

我想创建一个新列。该栏目应包括当天的部分内容,例如“早晨”,“下午”,“晚上”和“夜晚”。我有一个名为“DepTime”的专栏,其中包括军队时间。以此为条件:

早上500至1159

下午1200至1659

1700年至2059年晚上

晚上2100至400

我想创建我喜欢的新列:

Output[]: 
         DepTime    PartofDay
          1300        Noon
          2400        Night 

它抛出一个错误,但我尝试过这样:

for time in flight_data["DepTime"]:
    if flight_data_explored[time].map(lambda x: 500 if x > 1 else 1159):
             flight_data_explored["PartofDay"] = "Morning"

有没有办法,做这样的条件。帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

您可以numpy.where使用between

public ActionResult IsAuthenticated()
{
    return StatusCode(200, Json("123"));
}

答案 1 :(得分:1)

这是另一种解决方案:

数据:

In [69]: df
Out[69]:
   DepTime
0        0
1      400
2      500
3     1100
4     1200
5     1600
6     1700
7     1900
8     2100
9     2359

<强>解决方案:

bins = [0, 700, 1200, 1600, 2400]
labels = ['Morning','Afternoon','Evening','Night']

df['PartofDay'] = pd.cut(df.DepTime - 500 + 2400*(df.DepTime < 500),
                         bins=bins,
                         labels=labels,
                         right=False)

<强>结果:

In [71]: df
Out[71]:
   DepTime  PartofDay
0        0      Night
1      400      Night
2      500    Morning
3     1100    Morning
4     1200  Afternoon
5     1600  Afternoon
6     1700    Evening
7     1900    Evening
8     2100      Night
9     2359      Night