我的Pandas dataframe中有一个datetime列(作为对象类型)。我将datetime列分解为日期和时间两列,并使用以下代码使用to_datetime将两者转换为以下格式:
df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S').dt.time
df['Date'] = pd.to_datetime(df['Date'], format='%Y.%m.%d')在上面的代码执行之后,我有类型日期时间的日期列和类型对象的时间列(例如,00:14:53) -我不知道为什么不日期时间,因为我以前是_ Datetime -
我想将时间列分解为4个类别/回收箱,00:00:00 - 06:00:00作为类别1,然后06:00:00到12:00:00等等。
我试过不同的方法,但都错了。
我做错了什么,有什么帮助吗?
谢谢
发布于 2019-06-17 07:39:30
通过Time将Series.dt.hour列转换为小时,并使用cut进行绑定:
rng = pd.date_range('2017-04-03', periods=30, freq='H').strftime('%H:%M:%S')
df = pd.DataFrame({'Time': rng})
hours = pd.to_datetime(df['Time'], format='%H:%M:%S').dt.hour
df['cats'] = pd.cut(hours,
bins=[0,6,12,18,24],
include_lowest=True,
labels=['cat1','cat2','cat3','cat4'])print (df)
Time cats
0 00:00:00 cat1
1 01:00:00 cat1
2 02:00:00 cat1
3 03:00:00 cat1
4 04:00:00 cat1
5 05:00:00 cat1
6 06:00:00 cat1
7 07:00:00 cat2
8 08:00:00 cat2
9 09:00:00 cat2
10 10:00:00 cat2
11 11:00:00 cat2
12 12:00:00 cat2
13 13:00:00 cat3
14 14:00:00 cat3
15 15:00:00 cat3
16 16:00:00 cat3
17 17:00:00 cat3
18 18:00:00 cat3
19 19:00:00 cat4
20 20:00:00 cat4
21 21:00:00 cat4
22 22:00:00 cat4
23 23:00:00 cat4
24 00:00:00 cat1
25 01:00:00 cat1
26 02:00:00 cat1
27 03:00:00 cat1
28 04:00:00 cat1
29 05:00:00 cat1发布于 2020-07-02 13:29:24
def convert_to_unix(s):
return time.mktime(datetime.strptime(s, "%Y-%m-%d %H:%M:%S").timetuple())df['bins'] = np.array( [ int ( convert_to_unix(i) / 60 * 60 * 6) for i in df['Time']] )您可以在此之后更改类别。
https://stackoverflow.com/questions/56626440
复制相似问题