我在数据框中具有以下数据结构:
Date Hour
01/01/2016 1
01/01/2016 2
01/01/2016 3
01/01/2016 4
... ...
01/01/2016 13
01/01/2016 14
... ...
数据是2年的每小时数据。我设法将日期转换成datetime格式,但小时数被分开解析,并在单独的列中。如何将小时转换为日期时间对象并将其添加到日期,以便获得正确的日期时间结构:
Date Hour DateTime
01/01/2016 1 01/01/2016 01:00:00
01/01/2016 2 01/01/2016 02:00:00
01/01/2016 3 01/01/2016 03:00:00
01/01/2016 4 01/01/2016 04:00:00
... ... ...
01/01/2016 13 01/01/2016 13:00:00
01/01/2016 14 01/01/2016 14:00:00
... ... ...
答案 0 :(得分:1)
参考此代码并编写自己的代码 如果需要将日期时间转换为其他格式,则可以使用dt.strftime(但请注意,然后dtype的列将是对象(字符串)):
sed -i -E '/.*Society[ \t]*([0-9]*[ \t]*[0-9]*)[ \t]*bhavan$/d' *.ann
的DOB 0 26/1/2016 1 26/1/2016
import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '}})
print (df)
的DOB 0 2016年1月26日 1 2016-01-26
df['DOB'] = pd.to_datetime(df.DOB)
print (df)
的DOB DOB1 0 2016-01-26 01/26/2016 1 2016-01-26 01/26/2016
答案 1 :(得分:1)
给予
>>> df
Date Hour
0 01/01/2016 1
1 01/01/2016 2
2 01/01/2016 3
3 01/01/2016 4
我会发出
>>> df['Date'] = pd.to_datetime(df['Date']) # pick dayfirst=True or False in your code
>>> df
Date Hour
0 2016-01-01 1
1 2016-01-01 2
2 2016-01-01 3
3 2016-01-01 4
,然后通过矢量化时间增量来构造'DateTime'
列:
>>> df['DateTime'] = df['Date'] + pd.to_timedelta(df['Hour'], 'h')
>>> df
Date Hour DateTime
0 2016-01-01 1 2016-01-01 01:00:00
1 2016-01-01 2 2016-01-01 02:00:00
2 2016-01-01 3 2016-01-01 03:00:00
3 2016-01-01 4 2016-01-01 04:00:00
答案 2 :(得分:0)
假设您的2列“日期”和“小时”是字符串。但是,如果没有,应该照顾好它。接受2个字符串列,将它们连接起来,然后转换为特定格式的日期时间:
if not is_string_dtype(df['Date']):
df['Date'] = df['Date'].dt.strftime('%m/%d/%Y')
if not is_string_dtype(df['Hour']):
df['Hour'] = df['Hour'].astype(str)
df['DateTime'] = df['Date'] + ' ' + df['Hour']
df['DateTime'] = pd.to_datetime(pd.Series(df['DateTime']), format="%m/%d/%Y %H")