pandas - 如何设置列为日期索引?

标签 pandas dataframe timedelta

我的数据集如下所示:

       Date    Value
    1/1/1988    0.62
    1/2/1988    0.64
    1/3/1988    0.65
    1/4/1988    0.66
    1/5/1988    0.67
    1/6/1988    0.66
    1/7/1988    0.64
    1/8/1988    0.66
    1/9/1988    0.65
    1/10/1988   0.65
    1/11/1988   0.64
    1/12/1988   0.66
    1/13/1988   0.67
    1/14/1988   0.66
    1/15/1988   0.65
    1/16/1988   0.64
    1/17/1988   0.62
    1/18/1988   0.64
    1/19/1988   0.62
    1/20/1988   0.62
    1/21/1988   0.64
    1/22/1988   0.62
    1/23/1988   0.60

我用这段代码读取了这些数据
df.set_index(df['Date'], drop=False, append=False, inplace=False, verify_integrity=False).drop('Date', 1)

但是问题是索引不是日期格式。那么问题是如何将该列设置为日期索引?

最佳答案

您的问题缺少适当的解释,但是您可以执行以下操作:

In [75]:
# convert to datetime
df['Date'] = pd.to_datetime(df['Date'])
df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 23 entries, 0 to 22
Data columns (total 2 columns):
Date     23 non-null datetime64[ns]
Value    23 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 448.0 bytes

In [76]:
# set the index
df.set_index('Date', inplace=True)
df.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 23 entries, 1988-01-01 to 1988-01-23
Data columns (total 1 columns):
Value    23 non-null float64
dtypes: float64(1)
memory usage: 368.0 bytes

因此,这里 to_datetime 会将日期字符串转换为datetime dtype,您只需使用set_index参数 inplace=True

关于pandas - 如何设置列为日期索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610983/

相关文章:

python - 如何安装 Pandas 0.20.0

python - 基于多种条件的 Pandas 风格?

python - 如何测试 pandas 系列是否包含另一个列表(或 NumPy 数组或 pandas 系列)中的元素?

python - 不支持 pandas dataframe 到 mysql db 错误数据库风格 mysql

python - 在 Python 中访问 datetime.now() 值

python-3.x - 将值附加到特定的 DataFrame 单元格

pandas - 如何执行与 value_counts 相反的操作(即使用计数列获取具有重复值的数据帧列)?

python - 如何使用字符串索引字符串值将 pandas DataFrame 转换为 dict?

go - golang中的python timedelta之类的东西

表中所选记录的一列上的 MySQL 时间差