【发布时间】:2021-04-29 18:05:49
【问题描述】:
我有一个如下所示的数据框,其中 Hour 列是一系列整数:
|Hour|
0|23 |
1|14 |
2|6 |
3|2 |
我想要的输出如下:
|Hour| TimeofDay |
0|23 | Late Evening|
1|14 | Mid Day |
2|6 | Morning |
3|2 | Morning |
为了实现这个结果,我使用了以下代码行:
for index, row in df.iterrows():
if row["Hour"] > 16:
df['TimeofDay'] = "Late Evening"
elif np.logical_and(row["Hour"] > 8 , row["Hour"] <= 16):
df['HarshEventTime'] = "Mid Day"
else :
df['HarshEventTime'] = "Morning"
不幸的是,我的输出如下:
|Hour| TimeofDay |
0|23 | Morning |
1|14 | Morning |
2|6 | Morning |
3|2 | Morning |
我的 if 语句没有正确读取我的条件是否有原因?
【问题讨论】:
-
对于初学者来说,没有必要为此迭代 DataFrame。广播将更加清晰和高效。
numpy.where可能会有所帮助,但第一个语句可以在本地完成。
标签: python pandas numpy indexing