将pandas datetime64 pandas dataframe列设置为不带时间组件的datetimeindex

时间:2016-02-10 12:10:17

标签: python pandas indexing

从HDF5文件导入数据后,我的库存数据的索引已消失。

我的数据框中的一个列"日期"是Datetime64。如何将此日期列转换为datetimeindex列,但最后没有时间部分。

这样切割像data.ix["2016-01-01":"2016-02-06"]这样的数据帧就可以了。

2 个答案:

答案 0 :(得分:0)

IIUC,从样本数据框架开始:

               Date  x
0  2016-01-01 20:01  1
1  2016-01-02 20:02  2

你可以这样做:

df = df.set_index(pd.DatetimeIndex(df['Date']).date)

仅使用DatetimeIndex部分返回date

                        Date  x
2016-01-01  2016-01-01 20:01  1
2016-01-02  2016-01-02 20:02  2

答案 1 :(得分:0)

使用set_index将列转换为索引。您无需修剪时间部分以使其工作。

df = pd.DataFrame({
    'ts': pd.date_range('2015-12-20', periods=10, freq='12h'),
    'stuff': np.random.randn(10)
    })
print(df)

      stuff                  ts
0  0.942231 2015-12-20 00:00:00
1  1.229604 2015-12-20 12:00:00
2 -0.162319 2015-12-21 00:00:00
3 -0.142590 2015-12-21 12:00:00
4  1.057184 2015-12-22 00:00:00
5 -0.370927 2015-12-22 12:00:00
6 -0.358605 2015-12-23 00:00:00
7 -0.561857 2015-12-23 12:00:00
8 -0.020714 2015-12-24 00:00:00
9  0.552764 2015-12-24 12:00:00

print(df.set_index('ts').ix['2015-12-21':'2015-12-23'])

                        stuff
ts                           
2015-12-21 00:00:00 -0.162319
2015-12-21 12:00:00 -0.142590
2015-12-22 00:00:00  1.057184
2015-12-22 12:00:00 -0.370927
2015-12-23 00:00:00 -0.358605
2015-12-23 12:00:00 -0.561857