我有购买数据并希望用一个新列标记它们,它提供有关购买日期的信息。为此,我使用每次购买的时间戳列的小时。通过Pandas DataFrame迭代,使用条件并添加列
标签应该像这样工作:
hour 4 - 7 => 'morning'
hour 8 - 11 => 'before midday'
...
我拿起已经时间戳的时间。现在,我有一个DataFrame,其中包含50 mio的记录,如下所示。
user_id timestamp hour
0 11 2015-08-21 06:42:44 6
1 11 2015-08-20 13:38:58 13
2 11 2015-08-20 13:37:47 13
3 11 2015-08-21 06:59:05 6
4 11 2015-08-20 13:15:21 13
目前我的方法是使用6X .iterrows(),每一个不同的状态:
for index, row in basket_times[(basket_times['hour'] >= 4) & (basket_times['hour'] < 8)].iterrows():
basket_times['periode'] = 'morning'
则:
for index, row in basket_times[(basket_times['hour'] >= 8) & (basket_times['hour'] < 12)].iterrows():
basket_times['periode'] = 'before midday'
等。
但是,50个mio记录的6个循环中的一个已经花费了一个小时。有一个更好的方法吗?
作品完美!我也发现,我的方法根本不起作用。 –