我在数据框中有5列,分别代表每一行的年,月,日,小时和分钟。使用以下代码,我尝试添加另一列,该列使用前5列中的数据提供此格式:YYYY-MM-DD HH:MM:SS
for row in df.itertuples():
df.loc[row[0],'date'] = datetime.datetime(int(row[1]),int(row[2]),int(row[3]),int(row[4]),int(row[-1]))
我必须说我使用dmap转换编码的分钟数,以显示15的增量,如下所示:
dmap = {263:0,264:15,265:30,266:45}
df['ALIAS'] = df['MEAS_TYPE_ELEMENT_ALIAS'].map(dmap)
问题在于,此代码要处理400,000行几乎需要1个小时。我想知道是否有人可以帮助我找到一种更快的方法。
答案 0 :(得分:1)
没有样本数据很难知道,但这似乎很好:
df = pd.DataFrame({'Year': ['2015', '2016', '2017'],
'Month': ['10', '11', '12'],
'Day': ['1', '2', '3'],
'Hour': ['10', '12', '14'],
'Minute': ['25', '35', '45'],
'Cat': list('ABC')})
df['Date'] = pd.to_datetime(df[['Year', 'Month', 'Day', 'Hour', 'Minute']])
# Cat Day Hour Minute Month Year Date
#0 A 1 10 25 10 2015 2015-10-01 10:25:00
#1 B 2 12 35 11 2016 2016-11-02 12:35:00
#2 C 3 14 45 12 2017 2017-12-03 14:45:00
如果您的栏仅是['Year', 'Month', 'Day', 'Hour', 'Minute']
,即使这样做也可以:
df['Date'] = pd.to_datetime(df)