我有一张包含2列的csv表
Subject,Exam_Date
Maths,4/13/2017
Physics,4/15/2016
English,42936
在这个例子中 - 42936实际上是2017年7月20日。由于excel单元格数据类型是通用的 - 值已更改为42936。 我有一个python脚本来读取此csv文件。现在,我需要在将csv文件读取到dataframe时将Exam_date列类型转换为日期。 请帮助。
提前致谢。
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分:1)
您可以使用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
答案 2 :(得分:0)
只需将带有分隔符的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)