[英]Delete time minutes from time object python
我在 pandas dataframe 中有一个字段,我想从中截断分钟,即将时间转换为字符串,拆分它并仅保留小时。
The time field in my dataframe is of type object and what I have tried to do is as below (accidents is my pandas dataframe by the way):
for row in range (1, len(accidents)):
hour = row['Time'].strftime("%H").split(":", 1)[0]
例如,我想做的是将 17:45 更改为 17。
事故图像 Dataframe 如下。
Time object 的数据类型如下。
当我运行上述代码时,出现错误“TypeError: 'int' object is not subscriptable”
我知道这是某种形式的铸造错误,但我不知道如何解决它。 (我对 Python 很陌生)。
如果需要,可以重新生成 csv 文件(此处截断以仅包含相关字段)。 Accident_Index,Location_Easting_OSGR,Location_Northing_OSGR,经度,纬度,Police_Force,Accident_Severity,Number_of_Vehicles,Number_of_Casualties,日期,Day_of_Week,时间, 200501BS00001,525680,178240,-0.191170,51.4,380096,1/201,1/20,04/ ,17:42
datetime
模块的strftime()
需要有一个格式参数(请参阅下面的正确用法)。
>>> datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
'08/09/2020, 02:48:25'
(这里有一个好的strftime()
备忘单)
在您的情况下,您似乎只是想获取小时数。 为此,您应该使用以下格式字符串来获取小时: "%H"
。 如果您需要将其作为 integer (如果您需要用它进行数学运算),您可以简单地用int()
包围它。 如果您只想显示此数字,则可以将其保留为字符串。 strftime()
默认返回一个字符串。
试试这个代码:
hour = int(row['Time'].strftime("%H"))
您可以使用时间列的hour
属性
d = [d for d in pd.date_range(dt.datetime(2020,5,1,2),
dt.datetime(2020,5,3,4), freq="45min")
] # miss some sample times...
# random manipulation of rawIdx so there are some rows where ts is not in rawIdx
df = pd.DataFrame({"Time":d,
"val":[random.randint(0,50) for x in d]})
df["Hour"] = df["Time"].dt.hour
print(df.head().to_string(index=False))
output
Time val Hour
2020-05-01 02:00:00 39 2
2020-05-01 02:45:00 23 2
2020-05-01 03:30:00 9 3
2020-05-01 04:15:00 25 4
2020-05-01 05:00:00 41 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.