繁体   English   中英

Python导入csv文件时转换日期时间格式

[英]Converting date and time format when importing csv file in Python

我还没有找到类似问题的解决方案,所以我必须在这里给它一个 go。 我在记事本中导入一个 csv 文件,如下所示:

",""ItemName"""
"Time,""Raw Values"""
"7/19/2019  10:31:29 PM,"" 0"","
"7/19/2019  10:32:01 PM,"" 1"","

当我将它另存为新的 csv 时,我想要的是重新格式化日期/时间和相应的值(分析软件需要):分号作为分隔符,最后很重要,我真的不需要一个 header。

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

我尝试过使用日期时间但没有任何运气,但我不知道的数据类型可能有些可疑。

原则上你要的是读到DataFrame,转换datetime列再导出df到csv。 我认为您需要去掉引号字符才能正确导入。 您可以通过将文件内容读取为字符串,替换“”,并将该字符串提供给 pandas.read_csv 来实现。EX:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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