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