2016-11-09 30 views
0

所以這是我的數據框遇到問題DF指數轉換爲datetime對象

   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)轉換成DateTime對象,這樣我就可以使用該對象的方法。不過,我喜歡當前格式樣式的日期(11月9日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月9日14:19:00)格式,這是不是格式我想要的。

我甚至試圖看看是否有一個dtype datetime,我可以轉換爲(所以我不會改變顯示外觀),但我沒有找到這樣的dtype運氣。

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

謝謝。

+1

格式PARAM規定了轉換格式的字段不影響顯示,你可以轉換後dt.strftime'使用'但產生一個字符串,它是沒有多大用處,你會更好將它轉換爲日期時間,並且如果你想讓過濾更容易,就直接使用顯示格式 – EdChum

+0

啊,我明白了。謝謝。 – Moondra

回答

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 
+0

嗨羅曼。實際上,數據缺少日期,但我會嘗試通過您向我展示的代碼包含它。我原來的問題實際上是如果在將它轉換爲日期時間對象時保留「」顯示格式「」「Nov 09 01:25 PM」「。我想我模糊地問了我的問題,所以我會編輯它。非常感謝。 – Moondra