无法将df索引转换为datetime对象

时间:2016-11-09 20:36:51

标签: datetime pandas

所以这是我的数据框

                Ticker                           Owner  \
SEC Form 4                                               
Nov 09 02:19 PM    HSY                   HERSHEY TRUST  
Nov 09 02:05 PM    HSY                HERSHEY TRUST CO   
Nov 09 02:03 PM   WDFC                PITTARD DANIEL E   
Nov 09 01:34 PM   IMGN                   Enyedy Mark J   
Nov 09 01:25 PM    ORI                   ZUCARO ALDO C   

我正在尝试将索引(SEC表单4)转换为日期时间对象,因此我可以使用该对象的方法。但是,我喜欢日期的当前格式样式(11月09日02:19 PM),并且想要用(2016-11-09 14:19)等替换它。

pd.to_datetime(df.index, format = '%b %d')
pd.to_datetime(df.index, format = '%b %d %I:%M %p' )

我玩了一些这些格式参数,但似乎这些将日期的外观显示样式更改为类似(2016-11-09 14:19:00)格式,这不是我想要的格式。

我甚至试图看看是否有一个我可以转换为的dtype日期时间(所以我不必更改显示外观)但我没有找到这样的dtype的运气。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dtypes.html

谢谢。

1 个答案:

答案 0 :(得分:1)

也许您错过了追加年份,因为未在数据中指定。这是一个可能的解决方案。

zz = """"SEC Form 4"  Ticker  Owner                                               
"Nov 09 02:19 PM"    "HSY"                   "HERSHEY TRUST"
"Nov 09 02:05 PM"    HSY                "HERSHEY TRUST CO"   
"Nov 09 02:03 PM"   WDFC                "PITTARD DANIEL E"   
"Nov 09 01:34 PM"   IMGN                   "Enyedy Mark J"   
"Nov 09 01:25 PM"    ORI                   "ZUCARO ALDO C"   
"""

df = pd.read_table(io.StringIO(zz), delim_whitespace=True)
df.set_index('SEC Form 4', inplace=True)
# Adding the missing year
df.index = '2016 ' + df.index
# There is no need to detail the expected format
df.index = pd.to_datetime(df.index)

print(df.index.dtype)
print(df)
# datetime64[ns]
#                     Ticker             Owner
# 2016-11-09 14:19:00    HSY     HERSHEY TRUST
# 2016-11-09 14:05:00    HSY  HERSHEY TRUST CO
# 2016-11-09 14:03:00   WDFC  PITTARD DANIEL E
# 2016-11-09 13:34:00   IMGN     Enyedy Mark J
# 2016-11-09 13:25:00    ORI     ZUCARO ALDO C