【发布时间】:2016-11-27 03:39:09
【问题描述】:
我想通过在 if-then-else 块中评估多个条件来在 Pandas DataFrame 中创建一个新列。
if events.hour <= 6:
events['time_slice'] = 'night'
elif events.hour <= 12:
events['time_slice'] = 'morning'
elif events.hour <= 18:
events['time_slice'] = 'afternoon'
elif events.hour <= 23:
events['time_slice'] = 'evening'
当我运行它时,我收到以下错误:
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
所以我尝试通过添加如下所示的任何语句来解决这个问题:
if (events.hour <= 6).any():
events['time_slice'] = 'night'
elif (events.hour <= 12).any():
events['time_slice'] = 'morning'
elif (events.hour <= 18).any():
events['time_slice'] = 'afternoon'
elif (events.hour <= 23).any():
events['time_slice'] = 'evening'
现在我没有收到任何错误,但是当我检查 time_slice 的唯一值时,它只显示 'night'
np.unique(events.time_slice)
array(['night'], dtype=object)
我该如何解决这个问题,因为我的数据包含应该是“早上”、“下午”或“晚上”的样本。谢谢!
【问题讨论】:
标签: python pandas dataframe conditional