我具有以下格式的以下时间序列。
将列的“日期”和“时间”转换/组合为熊猫日期时间格式的最简单方法是什么?
我知道应该是pandas.to_datetime(date ...)。但是我不知道将它们组合起来的格式。
ccy date time open high low close
0 EURUSD 20190211 100 1.1318 1.1319 1.1317 1.1319
1 EURUSD 20190211 200 1.1320 1.1322 1.1319 1.1319
2 EURUSD 20190211 300 1.1318 1.1319 1.1318 1.1319
3 EURUSD 20190211 400 1.1319 1.1319 1.1318 1.1318
4 EURUSD 20190211 500 1.1318 1.1318 1.1318 1.1318
答案 0 :(得分:0)
这是进行转换的方式,但是您需要确保时间列有意义-当显示3位数字的时间时,您的表目前不明确。另外,请确保您的日期和时间列为字符串,否则将它们转换为字符串,因为明智地将它们连接起来将是必需的。
import pandas as pd
df=pd.DataFrame({'date':['20190211','20190211'],'time':['0100','0200']})
pd.to_datetime(df['date'] + df['time'], format='%Y%d%m%H%M')
答案 1 :(得分:0)
似乎date
和time
当前存储为整数。因此,您可能需要将它们转换为字符串才能执行字符串切片。
def convert_to_datetime(date, time):
datestr = str(date)
timestr = str(time)
result = datestr[0:4] + "/" + datestr[4:6] + "/" + datestr[6:]
result = result + " " + timestr[0:-2] + ":"+ timestr[-2:]
return pd.to_datetime(result)
df["datetime"] = df.apply(lambda x: convert_to_datetime(x["date"], x["time"], axis=1)
答案 2 :(得分:0)
两种方法:
# convert date
data['ddate']= [str(dt)[:4]+'-'+str(dt)[4:6]+'-'+str(dt)[-2:] for dt in
# convert time
data['dtime']= [str(dt)[:-2]+':'+str(dt)[-2:] for dt in data['dtime']]
# join
data['datetime'] = data['ddate'] + ' ' + data['dtime'] # space or whatever you want
# delete unneeded columns
del data['ddate'], data['dtime']
data['datetime']= pd.to_datetime([str(dt)+str(tm) for dt,tm in data[['date','time']].values],format='%Y%d%m%H%M')