2017-06-26 76 views
0

開始說我不是Python最有經驗的人,我還在學習。對於我正在開發的當前項目,我必須將一個CSV文件加載到Python中,其中我創建了一個Pandas DataFrame。目標是返回每列的數據類型,特別是具有不同日期格式的數據類型。我創建了一個小樣本CSV文件來測試它是否可以識別正確的數據類型。如何規範Pandas DataFrame中列的默認日期格式?

import pandas as pd 
    import numpy as np 
    from tabulate import tabulate 
    from datetime import datetime 

    #Read the CSV file into Pandas DataFrame 
    df= pd.DataFrame.from_csv("/Users/rohinmahesh/Documents/Example_CSV1.csv") 

    #Create a list of column names (Insert row number column at beginning later) 
    lst = list(df.columns.values) 


    #Identify column data type 

    print(df.dtypes) 

的CSV文件看起來如下: CSV File:

我面對的是,當我打電話print語句中,「日期」欄和「位置」欄都返回作爲問題對象。對於該項目,我需要將「位置」列標識爲字符串,並且將「日期」列標識爲日期(或Python中的DateTime?),我可以通過標準化日期格式?

任何幫助將不勝感激!

+0

謝謝你的迴應!我收到一條錯誤消息:「只有布爾值,列表和字典被'parse_dates'參數接受。」我應該使用from_csv嗎? – rmahesh

+0

您是否在read_csv中使用'parse_dates = ['Date']'? – jezrael

回答

0

我認爲你需要parse_dates參數read_csv

import pandas as pd 
from pandas.compat import StringIO 

temp=u"""Date 
1-Mar-16 
13-1-2015 
5/2/16""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), parse_dates=['Date']) 
print (df) 
     date 
0 2016-03-01 
1 2015-01-13 
2 2016-05-02 

print (df.Date.dtypes) 
datetime64[ns] 

但如果有一些不標準值使用to_datetime與參數errors='coerce'爲他們更換到NaTNaN的日期時間):

import pandas as pd 
from pandas.compat import StringIO 

temp=u"""Date 
date20150109 
1-Mar-16 
13-1-2015 
5/2/16""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp)) 
df['Date'] = pd.to_datetime(df['Date'], errors='coerce') 
print (df) 
     Date 
0  NaT 
1 2016-03-01 
2 2015-01-13 
3 2016-05-02 


print (df.Date.dtypes) 
datetime64[ns] 
+0

謝謝。你能否解釋一下錯誤='脅迫'究竟在做什麼?這意味着什麼? – rmahesh

+0

to_datetime對於無法解析爲datetime的值,不返回錯誤。所以所有這些值都轉換爲NaT。它更清楚嗎? – jezrael

+0

非常清楚非常感謝你! – rmahesh