转换 CSV 文件中多种格式的日期
Converting dates with multiple formats in a CSV file
我有一个 CSV 文件,其中包含一些 headers 的推文。其中,由于某些未知原因,日期格式从 %Y-%m-%d
中途更改为 %d/%m/%Y
如下图所示。
这使得在尝试将其导出到另一个程序时变得困难,例如Matlab。我试图在 Python 中解决这个问题,但任何其他解决方案都很好。
我只是通过谷歌搜索尝试了多种解决方案。主要是在读取CSV时解析成日期格式,DateTime.strptime
等。我是 Python 的新手,所以如果我有点无能,我很抱歉
我希望标准化所有日期,例如将 %d/%m/%Y
更改为其他格式,同时将其单独的行分开。
我正在考虑遵循 here 提出的方法,但如果它识别某种格式,则添加一个 if 语句。我将如何分解日期然后更改它?
这可能有用,但我懒得对照 CSV 文件的图像进行检查。
import pandas as pd
# Put all the formats into a list
possible_formats = ['%Y-%m-%d', '%d/%m/%Y']
# Read in the data
data = pd.read_csv("data_file.csv")
date_column = "date"
# Parse the dates in each format and stash them in a list
fixed_dates = [pd.to_datetime(data[date_column], errors='coerce', format=fmt) for fmt in possible_formats]
# Anything we could parse goes back into the CSV
data[date_column] = pd.NaT
for fixed in fixed_dates:
data.loc[~pd.isnull(fixed), date_column] = fixed[~pd.isnull(fixed)]
data.to_csv("new_file.csv")
我有一个 CSV 文件,其中包含一些 headers 的推文。其中,由于某些未知原因,日期格式从 %Y-%m-%d
中途更改为 %d/%m/%Y
如下图所示。
这使得在尝试将其导出到另一个程序时变得困难,例如Matlab。我试图在 Python 中解决这个问题,但任何其他解决方案都很好。
我只是通过谷歌搜索尝试了多种解决方案。主要是在读取CSV时解析成日期格式,DateTime.strptime
等。我是 Python 的新手,所以如果我有点无能,我很抱歉
我希望标准化所有日期,例如将 %d/%m/%Y
更改为其他格式,同时将其单独的行分开。
我正在考虑遵循 here 提出的方法,但如果它识别某种格式,则添加一个 if 语句。我将如何分解日期然后更改它?
这可能有用,但我懒得对照 CSV 文件的图像进行检查。
import pandas as pd
# Put all the formats into a list
possible_formats = ['%Y-%m-%d', '%d/%m/%Y']
# Read in the data
data = pd.read_csv("data_file.csv")
date_column = "date"
# Parse the dates in each format and stash them in a list
fixed_dates = [pd.to_datetime(data[date_column], errors='coerce', format=fmt) for fmt in possible_formats]
# Anything we could parse goes back into the CSV
data[date_column] = pd.NaT
for fixed in fixed_dates:
data.loc[~pd.isnull(fixed), date_column] = fixed[~pd.isnull(fixed)]
data.to_csv("new_file.csv")