Python/Pandas——将日和小时列转换为小时索引

Python/Pandas——将日和小时列转换为小时索引,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据框: df Date Hr CO2_resp 0 5/1/02 600 0.000889 1 5/2/02 600 0.000984 2 5/4/02 900 0.000912 如何创建一个列Ind,该列表示自2002年1月5日午夜以来经过的小时数索引?这样专栏就会读到 df Date Hr Ind CO2_resp 0 5/1/02

我有一个如下所示的数据框:

df
         Date    Hr    CO2_resp
0      5/1/02   600    0.000889
1      5/2/02   600    0.000984
2      5/4/02   900    0.000912
如何创建一个列
Ind
,该列表示自2002年1月5日午夜以来经过的小时数索引?这样专栏就会读到

df
         Date    Hr   Ind      CO2_resp
0      5/1/02   600     6      0.000889
1      5/2/02   600    30      0.000984
2      5/4/02   800    80      0.000912

谢谢。

假设<代码>日期是一个字符串,并且<代码>人力资源是一个整数,您可以应用一个函数来解析<代码>日期,从中获取小时数(天*24)以及您的参考日期,然后添加小时数

像这样的-

df.apply(lambda x: 
     (datetime.datetime.strptime(x['Date'], '%m/%d/%y')
      - datetime.datetime.strptime('5/1/02', '%m/%d/%y')).days
     * 24 + x['Hr'] / 100,
     axis=1)
你可以用。然后通过
np将
timedelta
转换为
hours
。timedelta64(1,'h')
和最后一个如果输出的
类型始终为
int
,则由:

如果不除以
100
Hr
,则输出不同:

df['Ind'] = ((df.Date 
              - pd.to_datetime('2002-05-01') 
              + pd.to_timedelta(df.Hr,unit='h')) / np.timedelta64(1, 'h')).astype(int)
print (df)
        Date   Hr  CO2_resp  Ind
0 2002-05-01  600  0.000889  600
1 2002-05-02  600  0.000984  624
2 2002-05-04  900  0.000912  972

你是从文本文件加载的吗?小时数之前通常是零吗<代码>0600
?@JoranBeasley是的。小时数通常不为零。嗯,但对于我来说,不清楚为什么必须将列
Hr
除以
100
在我的情况下,该列必须除以零,因为我需要知道自2012年1月5日午夜开始实验以来的小时数。谢谢你的帮助!
df['Ind'] = ((df.Date 
              - pd.to_datetime('2002-05-01') 
              + pd.to_timedelta(df.Hr,unit='h')) / np.timedelta64(1, 'h')).astype(int)
print (df)
        Date   Hr  CO2_resp  Ind
0 2002-05-01  600  0.000889  600
1 2002-05-02  600  0.000984  624
2 2002-05-04  900  0.000912  972