繁体   English   中英

在 H2O 框架中查找小时

[英]Find the hour in the H2O frame

我试图在格式为“hhmmss”即“90205”的列中找到小时,其中 9 表示小时。 有些行可能不包括秒,所以它可以是“902”,我仍然需要得到“9”。 该列的示例如下:

REQ_TIME 195426 508 140315 141432 203344 214103 63202 101807 110730 115052

我可以在常规的 dataframe 中这样做:

df["DATE"]=pd.to_datetime(df.REQ_DATE, format='%Y%m%d')
df["TIME"]=df["REQ_TIME"].apply(lambda x: str(x).zfill(6))
df['DATE_TIME']=df[['REQ_DATE','TIME']].apply(lambda x : '{} {}'.format(x[0],x[1]), axis=1)
df['DATE_TIME']=pd.to_datetime(df.DATE_TIME,infer_datetime_format=True)
df["HOUR"]=df.DATE_TIME.dt.hour
df['YEAR'] = df.DATE.dt.year
df['MONTH'] = df.DATE.dt.month
df['DAY'] = df.DATE.dt.day
df['DAY_OF_WEEK']=df.DATE.dt.dayofweek

但是我的数据在 H2OFrame 中,所以我无法使用常规的 python 方法。 我也不想将其转换为 dataframe,因为它需要很长时间。 我怎样才能在 H2OFrame 中做到这一点?

如果您的 REQ_TIME 字段始终为 6 位数字,即始终左右填充零,这将变得容易得多。 例如,您可以使用gsub来获取前两个字符。

或者,如果它总是在右侧补零(即缺失时附加“00”秒)并且作为数字字段导入,您可以除以 10000,然后使用floor

(See http://h2o-release.s3.amazonaws.com/h2o/rel-turchin/5/docs-website/h2o-py/docs/frame.html for the operations available on H2OFrames, from python API.)

但在您的情况下,我会下载该列,在 python 中进行复杂的操作,然后导入仅包含该列的H2O 框架。 给它一个列名"hours" 然后使用cbind将新列加入现有的 h2o 框架。

(查看此问题的另一种方法是您的问题的第一行不准确,因为它不是“hhmmss”格式,但实际上是“hmm”、“hhmm”、“hmmss”和“hhmmss”的混合混合在一个列中。一旦你这样描述它,你就会发现你有一个数据问题。就我个人而言,我会研究在数据收集点解决这个问题的努力。然后,如果你看到一个不完全是 6 位的时间戳,您会立即知道您有错误的数据。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM