Python 昼夜分类
我已经尝试了许多命令来正确地获取我在字典中定义的昼夜时间。但是,它部分工作,并返回其他意外结果 我有以下数据帧和命令Python 昼夜分类,python,pandas,dataframe,Python,Pandas,Dataframe,我已经尝试了许多命令来正确地获取我在字典中定义的昼夜时间。但是,它部分工作,并返回其他意外结果 我有以下数据帧和命令 import pandas as pd import numpy as np data = pd.DataFrame({ 'ID': [1, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10], 'date': ['2010-01-01 12:01:00', '2010-01-01 01:27:33', '2010-04-02 12:0
import pandas as pd
import numpy as np
data = pd.DataFrame({
'ID': [1, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 10],
'date': ['2010-01-01 12:01:00', '2010-01-01 01:27:33',
'2010-04-02 12:01:00', '2010-04-01 07:24:00', '2011-01-01 00:01:00',
'2011-01-01 01:27:33', '2013-01-01 12:51:00', '2014-01-01 00:30:00',
'2014-01-01 13:27:33', '2015-01-01 15:27:33', '2016-01-01 14:32:04',
'2011-01-01 21:28:00', '2015-01-01 22:27:33', '2015-01-01 15:45:00', '2015-01-01 23:27:43',
'2015-01-01 23:57:53']})
data = pd.DataFrame(data)
data['date'] = pd.to_datetime(data['date'], errors='coerce')
data['time'] = data['date'].dt.strftime('%H:%M:%S')
data['time'] = pd.to_datetime(data['time'], errors='coerce')
data['time'] = data['time'].dt.time
day = {'d': "'5:30:00'", 'n': "'21:30:00'"}
druing_day = {'morning': '4:30:00', 'afternoon': '11:00:00', 'evening': '16:30','night_time': '21:00:00'}
night = day['n']
day = day['d']
data['d-n'] = data['time'].apply(lambda x: 'day' if x.strftime('%H:%M:%S')<night else 'night')
morning = druing_day['morning'] # I tried to avoid using these parameters and to pass #druing_day['morning'] directly inside lampda function but it does not recognize it
afternoon = druing_day['afternoon']
evening = druing_day['evening']
night = druing_day['night_time']
data['d_time'] = data['time'].apply(lambda x:'morning' if x.strftime('%H:%M')<afternoon else
'afternoon' if x.strftime('%H:%M')<evening else 'evening'
if x.strftime('%H:%M')<night else 'night')
data
将熊猫作为pd导入
将numpy作为np导入
data=pd.DataFrame({
“ID”:[1,1,1,2,2,3,4,4,5,6,6,7,8,9,10],
“日期”:[“2010-01-01 12:01:00”,“2010-01-01 01:27:33”,
'2010-04-02 12:01:00', '2010-04-01 07:24:00', '2011-01-01 00:01:00',
'2011-01-01 01:27:33', '2013-01-01 12:51:00', '2014-01-01 00:30:00',
'2014-01-01 13:27:33', '2015-01-01 15:27:33', '2016-01-01 14:32:04',
'2011-01-01 21:28:00', '2015-01-01 22:27:33', '2015-01-01 15:45:00', '2015-01-01 23:27:43',
'2015-01-01 23:57:53']})
数据=pd.DataFrame(数据)
data['date']=pd.to_datetime(data['date'],errors='PRIVE')
数据['time']=数据['date'].dt.strftime(“%H:%M:%S”)
data['time']=pd.to_datetime(data['time'],errors='PRIVE')
数据['time']=数据['time'].dt.time
day={'d':“'5:30:00'”,'n':“'21:30:00'”
druing_day={‘上午’:‘4:30:00’、‘下午’:‘11:00:00’、‘晚上’:‘16:30’、‘晚上’:‘21:00:00’}
夜晚=白天
天=天
data['d-n']=data['time'].apply(lambda x:'day'if x.strftime(“%H:%M:%S”)您可以使用.indexer\u between\u time
来检查数据帧的索引是否在某个时间段之间。您只需要一个日期
列,因此,如果您不需要它做任何其他用途,则无需单独的时间
列
# Set day & nighttime based your specified time frames
data.loc[data.set_index('date').index.indexer_between_time('21:30', '5:30'), 'd-n'] = 'night'
data.loc[data.set_index('date').index.indexer_between_time('5:30', '21:30'), 'd-n'] = 'day'
结果
ID date time d-n d_time
0 1 2010-01-01 12:01:00 12:01:00 day afternoon
1 1 2010-01-01 01:27:33 01:27:33 night night
2 1 2010-04-02 12:01:00 12:01:00 day afternoon
3 1 2010-04-01 07:24:00 07:24:00 day morning
4 2 2011-01-01 00:01:00 00:01:00 night night
5 2 2011-01-01 01:27:33 01:27:33 night night
6 3 2013-01-01 12:51:00 12:51:00 day afternoon
7 4 2014-01-01 00:30:00 00:30:00 night night
8 4 2014-01-01 13:27:33 13:27:33 day afternoon
9 5 2015-01-01 15:27:33 15:27:33 day afternoon
10 6 2016-01-01 14:32:04 14:32:04 day afternoon
11 6 2011-01-01 21:28:00 21:28:00 day night
12 7 2015-01-01 22:27:33 22:27:33 night night
13 8 2015-01-01 15:45:00 15:45:00 day afternoon
14 9 2015-01-01 23:27:43 23:27:43 night night
15 10 2015-01-01 23:57:53 23:57:53 night night
请看一下pd.cut
。在这种情况下,您能提供一个如何使用pd.cut
的示例吗?
ID date time d-n d_time
0 1 2010-01-01 12:01:00 12:01:00 day afternoon
1 1 2010-01-01 01:27:33 01:27:33 night night
2 1 2010-04-02 12:01:00 12:01:00 day afternoon
3 1 2010-04-01 07:24:00 07:24:00 day morning
4 2 2011-01-01 00:01:00 00:01:00 night night
5 2 2011-01-01 01:27:33 01:27:33 night night
6 3 2013-01-01 12:51:00 12:51:00 day afternoon
7 4 2014-01-01 00:30:00 00:30:00 night night
8 4 2014-01-01 13:27:33 13:27:33 day afternoon
9 5 2015-01-01 15:27:33 15:27:33 day afternoon
10 6 2016-01-01 14:32:04 14:32:04 day afternoon
11 6 2011-01-01 21:28:00 21:28:00 day night
12 7 2015-01-01 22:27:33 22:27:33 night night
13 8 2015-01-01 15:45:00 15:45:00 day afternoon
14 9 2015-01-01 23:27:43 23:27:43 night night
15 10 2015-01-01 23:57:53 23:57:53 night night