我已阅读大量的SO答案,但无法找到明确的解决方案.
我在df中有这个数据day1,表示小时数:
1 10:53
2 12:17
3 14:46
4 16:36
5 18:39
6 20:31
7 22:28
Name: time, dtype: object>
Run Code Online (Sandbox Code Playgroud)
我想将其转换为时间格式.但是当我这样做时:
day1.time = pd.to_datetime(day1.time, format='H%:M%')
结果包括今天的日期:
1 2015-09-03 10:53:00
2 2015-09-03 12:17:00
3 2015-09-03 14:46:00
4 2015-09-03 16:36:00
5 2015-09-03 18:39:00
6 2015-09-03 20:31:00
7 2015-09-03 22:28:00
Name: time, dtype: datetime64[ns]>
Run Code Online (Sandbox Code Playgroud)
似乎这个format论点不起作用 - 如何在没有约会的情况下获得这里显示的时间?
更新
以下格式正确的时间,但不知何故列仍然是一个对象类型.为什么不转换成datetime64?
day1['time'] = pd.to_datetime(day1['time'], format='%H:%M').dt.time
1 10:53:00
2 12:17:00
3 14:46:00
4 16:36:00
5 18:39:00
6 20:31:00
7 22:28:00
Name: time, dtype: object>
Run Code Online (Sandbox Code Playgroud)
EdC*_*ica 31
执行转换后,您可以使用日期dt时间访问器来访问hour或time组件:
In [51]:
df['hour'] = pd.to_datetime(df['time'], format='%H:%M').dt.hour
df
Out[51]:
time hour
index
1 10:53 10
2 12:17 12
3 14:46 14
4 16:36 16
5 18:39 18
6 20:31 20
7 22:28 22
Run Code Online (Sandbox Code Playgroud)
你的格式字符串H%:M%也是格式错误的,它很可能引发一个ValueError: ':' is a bad directive in format 'H%:M%'
关于你的最后评论,dtype datetime.time不是datetime:
In [53]:
df['time'].iloc[0]
Out[53]:
datetime.time(10, 53)
Run Code Online (Sandbox Code Playgroud)
Bow*_*Liu 10
我最近也在为这个问题而苦苦挣扎。我的方法与EdChum的方法接近,结果与YOBEN_S的答案相同。
就像 EdChum 所示的那样,使用dt.hourordt.time会给你一个 datetime.time 对象,这可能只适合显示。我几乎无法对这些物体进行任何比较或计算。因此,如果您需要对结果列进行任何进一步的比较或计算操作,最好避免此类数据格式。
我的方法只是从结果中减去日期to_datetime:
c = pd.Series(['10:23', '12:17', '14:46'])
pd.to_datetime(c, format='%H:%M') - pd.to_datetime(c, format='%H:%M').dt.normalize()
Run Code Online (Sandbox Code Playgroud)
结果是
0 10:23:00
1 12:17:00
2 14:46:00
dtype: timedelta64[ns]
Run Code Online (Sandbox Code Playgroud)
dt.normalize()基本上将所有时间分量设置为 00:00:00,并且它只会显示日期,同时保持datetime64数据格式,从而可以用它进行计算。
我的答案并不比其他两个好。我只是想提供一种不同的方法并希望它有所帮助。
您可以使用 to_timedelta
pd.to_timedelta(df+':00')
Out[353]:
1 10:53:00
2 12:17:00
3 14:46:00
4 16:36:00
5 18:39:00
6 20:31:00
7 22:28:00
Name: Time, dtype: timedelta64[ns]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37013 次 |
| 最近记录: |