Python / numpy / pandas / 数据结构 · 2022年7月12日 0

pandas dataframe set index 失效

pandas dataframe set index 失效的问题,主要是指的 set_index()函数指定了column_name,但是展示或者使用数据dataframe的时候index依旧是默认以0,1,2…数字形式的序列,例如以下代码及其效果

import pandas as pd

data = pd.read_csv("../Desktop/TSLA.csv")
data.set_index(pd.DatetimeIndex(data['Date'].values))
data.shape
print(data.head(2))
                  Date        Open  ...  Dividends  Stock Splits
0  2020-06-01 00:00:00  171.600006  ...          0           0.0
1  2020-06-02 00:00:00  178.940002  ...          0           0.0

这个问题主要是使用者对pandas的api不够了解或者没有自信阅读API文档导致的,在官方的函数方法说明中清清楚楚的写着,set_index的返回值是一个dataframe或者是空,而如果是空的话其中的inplace参数必须是True。

pandas dataframe set_index返回值
pandas dataframe set_index返回值

至此我们可以得出结论,有两种方式来解决 pandas.DataFrame.set_index(“col_name“)失效问题,分别如下代码两种方式设置了index之后的dataframe数据效果

data.set_index(pd.DatetimeIndex(data['Date'].values), inplace=True)
data data.set_index(pd.DatetimeIndex(data['Date'].values))
                           Date        Open  ...  Dividends  Stock Splits
2020-06-01  2020-06-01 00:00:00  171.600006  ...          0           0.0
2020-06-02  2020-06-02 00:00:00  178.940002  ...          0           0.0