创建一个新的 "object" 列
Creating a new "object" column
我想创建一个新专栏。该列应包含一天中的部分,例如 "Morning"、"Afternoon"、"Evening" 和 "Night"。我有一个名为 "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"
有没有办法,做到这样的条件。帮助将不胜感激
您可以使用 numpy.where
with between
:
mask1 = df.DepTime.between(500, 1159)
mask2 = df.DepTime.between(1200,1659)
mask3 = df.DepTime.between(1700,2059)
df['PartofDay1'] = np.where(mask1, 'Morning',
np.where(mask2, 'Afternoon',
np.where(mask3, 'Evening', 'Night')))
print (df)
DepTime PartofDay PartofDay1
0 1300 Noon Afternoon
1 2400 Night Night
这是另一个解决方案:
数据:
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
我想创建一个新专栏。该列应包含一天中的部分,例如 "Morning"、"Afternoon"、"Evening" 和 "Night"。我有一个名为 "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"
有没有办法,做到这样的条件。帮助将不胜感激
您可以使用 numpy.where
with between
:
mask1 = df.DepTime.between(500, 1159)
mask2 = df.DepTime.between(1200,1659)
mask3 = df.DepTime.between(1700,2059)
df['PartofDay1'] = np.where(mask1, 'Morning',
np.where(mask2, 'Afternoon',
np.where(mask3, 'Evening', 'Night')))
print (df)
DepTime PartofDay PartofDay1
0 1300 Noon Afternoon
1 2400 Night Night
这是另一个解决方案:
数据:
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