首先说我不是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?),我可以通过规范化日期来理解格式?
非常感谢任何帮助!
答案 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]