在python熊猫中将编码的分钟更改为日期时间

时间:2018-07-18 21:39:27

标签: python pandas datetime

我有一个看起来像这样的数据集。我必须提到263表示(0-15分钟),264表示(16-30分钟),265表示(31-45分钟),而266表示(46-60分钟)。我需要将这些列转换为以下单个列:YYYY-MM-DD HH:MM:SS

LOCAL_YEAR  LOCAL_MONTH LOCAL_DAY   LOCAL_HOUR  VALUE   FLAG    STATUS  MEAS_TYPE_ELEMENT_ALIAS
2006    4   11  0   0       R   263
2006    4   11  0   0       R   264
2006    4   11  0   0       R   265
2006    4   11  0   0       R   266
2006    4   11  1   0       R   263
2006    4   11  1   0       R   264
2006    4   11  1   0       R   265
2006    4   11  1   0       R   266

我想知道是否有人可以帮助我?

这是代码:

import pandas as pd
import numpy as np 
raw_data=pd.read_csv('Squamish_263_264_265_266.csv')


############################################## Reading rainfall and years ###################################

df=raw_data.iloc[:,[2,3,4,5,6,9]]
#print(df)

import datetime 

dmap = {263:0,264:16,265:31,266:46}
df['MEAS_TYPE_ELEMENT_ALIAS_map'] = df['MEAS_TYPE_ELEMENT_ALIAS'].map(dmap)
for row, v in df.iterrows():
    df.loc[row,'date'] = datetime.datetime(v['LOCAL_YEAR'],v['LOCAL_MONTH'],v['LOCAL_DAY'],v['LOCAL_HOUR'],v['MEAS_TYPE_ELEMENT_ALIAS_map'])

但是会出现此错误:

TypeError:预期为整数参数,为浮点数

试图在DataFrame的切片副本上设置一个值。 尝试改用.loc [row_indexer,col_indexer] =值

1 个答案:

答案 0 :(得分:0)

使用地图将别名转换为一分钟,然后反复构建日期

dmap = {263:0,264:16,265:31,266:46}
df['ALIAS_map'] = df['MEAS_TYPE_ELEMENT_ALIAS'].map(dmap)
df.reset_index(inplace=True)
for row in df.head(50).itertuples():    
   df.loc[row[0],'date'] = datetime.datetime(int(row[1]),row[2],row[3],row[4],row[-1])