在pandas df中设置索引而不创建重复列

问题描述 投票:1回答:2

我的数据框看起来像这样:

In [120]: data.head()
Out[120]: 
         date   open   high    low  close  volume
0  2017-08-07  2.276  2.276  2.253  2.257     0.0
1  2017-08-08  2.260  2.291  2.253  2.283     0.0
2  2017-08-09  2.225  2.249  2.212  2.241     0.0
3  2017-08-10  2.241  2.241  2.210  2.212     0.0
4  2017-08-11  2.199  2.222  2.182  2.189     0.0

做完之后:

data.index = pd.to_datetime(data['date'])

我最终得到了这个:

In [122]: data.head()
Out[122]: 
                  date   open   high    low  close  volume
date                                                      
2017-08-07  2017-08-07  2.276  2.276  2.253  2.257     0.0
2017-08-08  2017-08-08  2.260  2.291  2.253  2.283     0.0
2017-08-09  2017-08-09  2.225  2.249  2.212  2.241     0.0
2017-08-10  2017-08-10  2.241  2.241  2.210  2.212     0.0
2017-08-11  2017-08-11  2.199  2.222  2.182  2.189     0.0

我怎样才能避免以重复的日期列结束?感谢你的帮助。 (熊猫0.21.1)

python pandas python-3.6
2个回答
2
投票

首先转换为日期并使用.set_index()

data['date'] = pd.to_datetime(data['date'])
data.set_index('date', inplace=True)
print(data)

输出:

             open   high    low  close  volume
date                                          
2017-08-07  2.276  2.276  2.253  2.257     0.0
2017-08-08  2.260  2.291  2.253  2.283     0.0
2017-08-09  2.225  2.249  2.212  2.241     0.0
2017-08-10  2.241  2.241  2.210  2.212     0.0
2017-08-11  2.199  2.222  2.182  2.189     0.0

inplace=True修改你的data而不是创建一个新的数据帧。


1
投票

我正在使用drop而不是inplace。也工作。

data ['date'] = pd.to_datetime(data ['date'])

data.set_index('date',drop = True)

将drop属性设置为True时,将删除要用作新索引的列

© www.soinside.com 2019 - 2024. All rights reserved.