如何规范Pandas DataFrame中列的默认日期格式?

时间:2017-06-26 08:22:14

标签: python csv pandas dataframe

首先说我不是Python最有经验的人,我还在学习。对于我正在处理的当前项目,我必须将CSV文件加载到Python中,在其中我创建了一个Pandas DataFrame。目标是返回每列的数据类型,特别是具有不同日期格式的数据类型。我创建了一个小样本CSV文件来测试它是否可以识别正确的数据类型。

    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语句时,“Dates”列和“Location”列都作为对象返回。对于项目,我需要将“Location”列标识为String,并将“Dates”列标识为Date(或Python中的DateTime?),我可以通过规范化日期来理解格式?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我认为您需要read_csv中的parse_dates参数:

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'将其替换为NaT(日期时间为NaN):

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]