8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

pandas.to_datetime时间字符串格式不一致

Attila the Fun 1月前

23 0

我正在尝试使用 pandas.to_datetime() 将 pandas.DataFrame 的索引从字符串格式转换为日期时间索引。导入 pandas:在 [1] 中:导入 pandas 作为 pdIn [2]:pd.__version__O...

我正在尝试将字符串格式的索引转换 pandas.DataFrame 为日期时间索引,使用 pandas.to_datetime() .

导入熊猫:

In [1]: import pandas as pd

In [2]: pd.__version__
Out[2]: '0.10.1'

创建一个示例 DataFrame:

In [3]: d = {'data' : pd.Series([1.,2.], index=['26/12/2012', '10/01/2013'])}

In [4]: df=pd.DataFrame(d)

查看指数。请注意日期格式为日/月/年:

In [5]: df.index
Out[5]: Index([26/12/2012, 10/01/2013], dtype=object)

将索引转换为日期时间:

In [6]: pd.to_datetime(df.index)
Out[6]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-12-26 00:00:00, 2013-10-01 00:00:00]
Length: 2, Freq: None, Timezone: None

此时,您已经可以看到每个条目的日期格式不同。第一个条目没有问题,第二个条目的月份和日期互换了。

这是我想要写的,但要避免日期字符串的格式不一致:

In [7]: df.set_index(pd.to_datetime(df.index))
Out[7]: 
data
2012-12-26   1
2013-10-01   2

我猜测第一个条目是正确的,因为该函数“知道”没有 26 个月,因此不会选择默认的月/日/年格式。

还有其他/更好的方法吗?我可以将格式传递给函数 to_datetime() 吗?

谢谢。

编辑:

我找到了一种无需使用 pandas.to_datetime 即可实现此目的的方法:

import datetime.datetime as dt
date_string_list = df.index.tolist()
datetime_list = [ dt.strptime(date_string_list[x], '%d/%m/%Y') for x in range(len(date_string_list)) ]
df.index=datetime_list

但有点乱。欢迎提出任何改进。

帖子版权声明 1、本帖标题:pandas.to_datetime时间字符串格式不一致
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Attila the Fun在本站《datetime》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 参数 dayfirst 有(隐藏?) to_datetime :

    In [23]: pd.to_datetime(df.index, dayfirst=True)
    Out[23]:
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-12-26 00:00:00, 2013-01-10 00:00:00]
    Length: 2, Freq: None, Timezone: None
    

    在 pandas 0.11(及以后版本)中,您将能够使用以下 format 参数:

    In [24]: pd.to_datetime(df.index, format='%d/%m/%Y')
    Out[24]:
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-12-26 00:00:00, 2013-01-10 00:00:00]
    Length: 2, Freq: None, Timezone: None
    
返回
作者最近主题: