如何解决在Python中导入csv文件时转换日期和时间格式
我还无法找到类似问题的解决方案,所以我必须在这里解决。 我正在记事本中导入如下所示的csv文件:
",""ItemName"""
"Time,""Raw Values"""
"7/19/2019 10:31:29 PM,"" 0"","
"7/19/2019 10:32:01 PM,"" 1"","
当我将其另存为新的csv时,我想要的是将日期/时间和相应的值重新设置为此格式(分析软件要求):分号作为分隔符,最后使用分号很重要,而我不真的不需要标题。
2019-07-19 22:31:29;0;
2019-07-19 22:32:01;1;
这是在Python中的样子:
Item1 = pd.read_csv(r'.\Datafiles\ItemName.csv')
Item1
#Output:
#,"ItemName"
# 0 Time,"Raw Values"
# 1 7/19/2019 10:31:29 AM," 0",# 2 7/19/2019 10:32:01 AM," 1",valve_G1.dtypes
#,"ItemName" object
# dtype: object
我尝试使用datetime时没有任何运气,但是我不了解的数据类型可能有些混乱。
解决方法
原则上您想要的是读取到DataFrame,转换datetime列,然后将df再次导出到csv。我认为您需要摆脱quote-chars才能正确导入。为此,您可以将文件内容读取为字符串,替换为“”,然后将该字符串输入pandas.read_csv。例如:
import os
from io import StringIO
import pandas as pd
# this is just to give an example:
s='''",""ItemName"""
"Time,""Raw Values"""
"7/19/2019 10:31:29 PM,"" 0"","
"7/19/2019 10:32:01 PM,"" 1"","'''
f = StringIO(s)
# in your script,make f a file pointer instead,e.g.
# with open('path_to_input.csv','r') as f:
# now get rid of the "
csvcontent = ''
for row in f:
csvcontent += row.replace('"','')
# read to DataFrame
df = pd.read_csv(StringIO(csvcontent),sep=',',skiprows=1,index_col=False)
df['Time'] = pd.to_datetime(df['Time'])
# save cleaned output as ;-separated csv
dst = 'path_where_to_save.csv'
df.to_csv(dst,index=False,sep=';',line_terminator=';'+os.linesep)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。