使用 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
我正在使用一个数据库 (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