我编辑了这个问题,以明确我想要解决的问题。
这是我得到的数据:
Date open high close low volume price_change
0 2015-03-25 13:55:00 15.37 15.38 15.35 15.34 1121.00 -0.02
1 2015-03-25 14:00:00 15.36 15.38 15.36 15.34 595.00 0.00
2 2015-03-25 14:05:00 15.36 15.38 15.36 15.35 1369.01 0.00
3 2015-03-25 14:10:00 15.36 15.40 15.40 15.36 3215.55 0.04
4 2015-03-25 14:15:00 15.40 15.45 15.39 15.39 1563.45 -0.01
我想将日期列分为两列,一个是“2015-03-25”,另一个是“13:55:00”。
答案 0 :(得分:1)
我可以建议以下内容......代码的关键位在最后两行......代码的其余部分是重新创建您的DataFrame ......
# load your data
from StringIO import StringIO # import from io for python 3
data = """ Date, open, high, close, low, volume, price_change
2015-03-25 13:55:00, 15.37, 15.38, 15.35, 15.34, 1121.00, -0.02
2015-03-25 14:00:00, 15.36, 15.38, 15.36, 15.34, 595.00, 0.00
2015-03-25 14:05:00, 15.36, 15.38, 15.36, 15.35, 1369.01, 0.00
2015-03-25 14:10:00, 15.36, 15.40, 15.40, 15.36, 3215.55, 0.04
2015-03-25 14:15:00, 15.40, 15.45, 15.39, 15.39, 1563.45, -0.01"""
df = pd.read_csv(StringIO(data), header=0, index_col=None, skipinitialspace=True)
df.Date = pd.to_datetime(df.Date)
# now let's create the date and time columns you want
df['date_only'] = [x.date() for x in df['Date']]
df['time_only'] = [x.time() for x in df['Date']]
这给我的输出如下......
In [8]: df
Out[8]:
Date open high close low volume price_change \
0 2015-03-25 13:55:00 15.37 15.38 15.35 15.34 1121.00 -0.02
1 2015-03-25 14:00:00 15.36 15.38 15.36 15.34 595.00 0.00
2 2015-03-25 14:05:00 15.36 15.38 15.36 15.35 1369.01 0.00
3 2015-03-25 14:10:00 15.36 15.40 15.40 15.36 3215.55 0.04
4 2015-03-25 14:15:00 15.40 15.45 15.39 15.39 1563.45 -0.01
date_only time_only
0 2015-03-25 13:55:00
1 2015-03-25 14:00:00
2 2015-03-25 14:05:00
3 2015-03-25 14:10:00
4 2015-03-25 14:15:00
值得注意的是,这会产生不同类型的数据。
In [62]: type(df.date_only[0])
Out[62]: datetime.date
In [63]: type(df.time_only[0])
Out[63]: datetime.time
In [64]: type(df.Date[0])
Out[64]: pandas.tslib.Timestamp
In [65]: df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 0 to 4
Data columns (total 9 columns):
Date 5 non-null datetime64[ns]
open 5 non-null float64
high 5 non-null float64
close 5 non-null float64
low 5 non-null float64
volume 5 non-null float64
price_change 5 non-null float64
date_only 5 non-null object
time_only 5 non-null object
dtypes: datetime64[ns](1), float64(6), object(2)
memory usage: 400.0+ bytes
除了上述所有内容之外,您可以使用一系列datetime64 [ns]对象(上面的Date列)的新.dt访问器属性来实现您想要的功能。这是在熊猫0.15.0中引入的。它允许您执行df.Date.dt.year
之类的操作以从datetime64 [ns]对象获取年份。还有月,日,小时,分钟,秒等等。