[英]convert csv column data type
我有一个包含 2 列的 csv 表:
Subject,Exam_Date
Maths,4/13/2017
Physics,4/15/2016
English,42936
在这个例子中42936
实际上是7/20/2017
。 由于 Excel 单元格数据类型是通用的,因此该值已更改为42936
。
我有一个 python 脚本来读取这个 csv 文件。 现在我需要将Exam_date
列类型转换为日期,同时将 csv 文件读入DataFrame
。
您可以使用xlrd.xldate_as_tuple
将数字转换为日期元组,然后提供给datetime
模块:
import datetime
import xlrd
df=pd.read_csv('test.csv')
converted_date = [ e if '/' in e else datetime.datetime(*xlrd.xldate_as_tuple(int(e),0)) for e in df["Exam_Date"] ]
df["Exam_Date"] = converted_date
df
df 将是:
Subject Exam_Date
0 Maths 2017-04-13
1 Physics 2016-04-15
2 English 2017-07-20
你可以使用converters
。
import xlrd
In [44]: def converter(x):
...: try:
...: return xlrd.xldate.xldate_as_datetime(int(x), 0)
...: except (ValueError, TypeError):
...: return x
...:
In [45]: pd.read_csv('test.csv', converters={'Exam_Date': converter})
Out[45]:
Subject Exam_Date
0 Maths 2017-04-13
1 Physics 2016-04-15
2 English 2017-07-20
只需使用带有分隔符的 read_table 作为“,”以及literal_eval作为转换相关列中值的函数。
recipes = pd.read_table("\souravD\PP_recipes.csv", sep=r',', names=["id", "i", "name_tokens", "ingredient_tokens", "steps_tokens", "techniques","calorie_level","ingredient_ids"], converters = {'name_tokens' : literal_eval, 'ingredient_tokens' : literal_eval, 'steps_tokens' : literal_eval, 'techniques' : literal_eval, 'ingredient_ids' : literal_eval},header=0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.