我想在从包含年、月、日、小时和分钟列的csv文件中读取的pandas数据帧中添加一个np.datetime64
列,并将其用作索引。我已经将这些单独的列组合成了日期时间字符串列。
import numpy as np
import pandas as pd
filename = 'test.csv'
df = pd.read_csv(filename, header=0, usecols = [2,3,4,5,6], names = ['y','m','d','h','min'],dtype = {'y':'str','m':'str','d':'str','h':'str','min':'str'}) #read csv file into df
df['datetimetext'] = (df['y']+'-'+df['m']+'-'+df['d']+' '+df['h']+':'+df['min']+':00')
所以数据框看起来像这样:
y m d h min datetimetext
0 1993 09 06 00 30 1993-09-06 00:30:00
1 1993 09 06 01 00 1993-09-06 01:00:00
2 1993 09 06 01 30 1993-09-06 01:30:00
3 1993 09 06 02 00 1993-09-06 02:00:00
4 1993 09 06 02 30 1993-09-06 02:30:00
......
现在我想添加一个列,其中日期时间格式为
np.datetime64
。我想写:
df['datetime'] = np.datetime64(df['datetimetext'])
但是这会产生一个错误
ValueError: Could not convert object to NumPy datetime
我需要遍历每一行的数据框吗?还是有更优雅的解决方案?
m
是一个字典,将您的列名映射到适当的转换名称... 我会更新帖子。请稍等。 - piRSquaredpd.read_csv
行中更改了列名,所以您的解决方案简化为df.index=pd.to_datetime(df[['year','month','day','h','m']])
(我保留了此处列出的列,因为我的实际代码中还有其他列)。谢谢。 - doctorer