从时间中提取小时部分,并将其 return 作为具有 pandas 的整数
Extract the hour part from the time and return it as an integer with pandas
我需要从表示时间的时间列中提取小时部分,格式为:“00:00:00”(小时:分钟:秒),return 将其作为 integer
与 PANDAS
.
例如:
如果我的 time
值为 00:12:06
我需要将小时作为整数获取,即 0
(
将time
格式转换为datetime
格式后即可使用dt.hour
# Convert to datetime and extract hour:
df['hour'] = pd.to_datetime(df['time']).dt.hour
示例:
>>> df
time
0 00:12:06
1 01:12:06
df['hour'] = pd.to_datetime(df['time']).dt.hour
>>> df
time hour
0 00:12:06 0
1 01:12:06 1
如果您只想从该列中获取一个整数,一种快速的方法是只获取表示小时的字符串部分并将其转换为 int
。假设您的数据框有列 df['time']
:
df['hour'] = df['time'].apply(lambda x: int(x[:2]))
不清楚时间列是字符串格式还是日期时间格式。
如果是字符串,可以:
import pandas as pd
df['time'] = ["00:05:12"]
df['hour'] = df['time'].apply(lambda s: int(s.split(':')[0]))
如果是日期时间对象:
from datetime import time
df['time2'] = [time(hour=00, minute=50, second=3)]
df['hour2'] = df['time2'].apply(lambda x: x.hour)
给你。这应该给你你需要的逻辑。您基本上需要 pandas 来构建数据框,然后使用 apply 来提取小时值。
import pandas as pd
data = [
{'Id':'01', 'Name': "Donald", 'DOB': '14/06/1946 07:16:00', 'Hour' :None},
{'Id':'02', 'Name': "Obama", 'DOB': '04/08/1961 15:04:00', 'Hour' :None},
{'Id':'03', 'Name': "Clinton", 'DOB': '26/10/1947 00:12:06', 'Hour' :None}
]
df = pd.DataFrame(data)
df['DOB'] = pd.to_datetime(df['DOB'], format='%d/%m/%Y %H:%M:%S')
df['Hour'] = df['DOB'].apply(lambda x: x.hour)
df[['Id', 'Name', 'DOB','Hour']]
我需要从表示时间的时间列中提取小时部分,格式为:“00:00:00”(小时:分钟:秒),return 将其作为 integer
与 PANDAS
.
例如:
如果我的 time
值为 00:12:06
我需要将小时作为整数获取,即 0
(
将time
格式转换为datetime
格式后即可使用dt.hour
# Convert to datetime and extract hour:
df['hour'] = pd.to_datetime(df['time']).dt.hour
示例:
>>> df
time
0 00:12:06
1 01:12:06
df['hour'] = pd.to_datetime(df['time']).dt.hour
>>> df
time hour
0 00:12:06 0
1 01:12:06 1
如果您只想从该列中获取一个整数,一种快速的方法是只获取表示小时的字符串部分并将其转换为 int
。假设您的数据框有列 df['time']
:
df['hour'] = df['time'].apply(lambda x: int(x[:2]))
不清楚时间列是字符串格式还是日期时间格式。
如果是字符串,可以:
import pandas as pd
df['time'] = ["00:05:12"]
df['hour'] = df['time'].apply(lambda s: int(s.split(':')[0]))
如果是日期时间对象:
from datetime import time
df['time2'] = [time(hour=00, minute=50, second=3)]
df['hour2'] = df['time2'].apply(lambda x: x.hour)
给你。这应该给你你需要的逻辑。您基本上需要 pandas 来构建数据框,然后使用 apply 来提取小时值。
import pandas as pd
data = [
{'Id':'01', 'Name': "Donald", 'DOB': '14/06/1946 07:16:00', 'Hour' :None},
{'Id':'02', 'Name': "Obama", 'DOB': '04/08/1961 15:04:00', 'Hour' :None},
{'Id':'03', 'Name': "Clinton", 'DOB': '26/10/1947 00:12:06', 'Hour' :None}
]
df = pd.DataFrame(data)
df['DOB'] = pd.to_datetime(df['DOB'], format='%d/%m/%Y %H:%M:%S')
df['Hour'] = df['DOB'].apply(lambda x: x.hour)
df[['Id', 'Name', 'DOB','Hour']]