繁体   English   中英

转换csv列数据类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM