python将每小时数据[1-24]添加到日期时间数据

时间:2018-12-13 09:56:33

标签: python pandas datetime dataframe

我在数据框中具有以下数据结构:

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
   ...        ...             ...

3 个答案:

答案 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")