使用 pandas 创建包含行信息的类别

Creating categories with rows information with pandas

我正在使用一个数据库 (xlsx),它会通知动物在研究区域内的时间,如下所示:

我想把时间分组,把时间捡起来分类。

24h-6h - 黎明 6h-12h - 早上 12h-18h - 下午 18 小时 - 24 小时 - 晚上

所以“21:25:00”不是“晚上”,而是“10:36:00”是“早上”,依此类推。

我如何用 pandas 做到这一点?我尝试使用与重命名列相同的方法,就像这样。

pamdf.loc[pamdf['Hora em que foram detectados dentro da área de exclusão'].isin( ['24:00:00':'06:00:00' ]), 'Hora em que foram detectados dentro da área de exclusão'] = 'Dawn'

但它没有任何意义,显然没有奏效。我可以使用“pandas.cut”吗?怎么样?

在此先感谢大家,抱歉英语不好。

示例:

Hour  
21:25
10:36
23:17
04:55
21:12
23:58
19:55
20:54
23:01
00:20
18:54

你可以这样做:

import pandas as pd

def convert_to_category(x):
    if x in set([i for i in range(1,7)]):
        return 'Dawn'
    elif x in set([i for i in range(7,13)]):
        return 'Morning'
    elif x in set([i for i in range(13,19)]):
        return 'Afternoon'
    else:
        return 'Night'

df = pd.DataFrame({'time':['21:25:00','10:36:00','23:17:00']})

df['period'] = pd.to_datetime(df['time']).dt.hour.apply(lambda x: convert_to_category(x))


    time        period
0   21:25:00    Night
1   10:36:00    Morning
2   23:17:00    Night