【问题标题】:How to normalize the default date format for a column in a Pandas DataFrame?如何规范化 Pandas DataFrame 中列的默认日期格式?
【发布时间】:2017-06-26 17:22:14
【问题描述】:

首先要说我不是最有经验的 Python,我仍在学习。对于我正在处理的当前项目,我必须将一个 CSV 文件加载到 Python 中,并在其中创建了一个 Pandas DataFrame。目标是返回每列的数据类型,特别是具有不同日期格式的数据类型。我创建了一个小样本 CSV 文件来测试它是否可以识别正确的数据类型。

    import pandas as pd
    import numpy as np
    from tabulate import tabulate
    from datetime import datetime

    #Read the CSV file into Pandas DataFrame
    df= pd.DataFrame.from_csv("/Users/rohinmahesh/Documents/Example_CSV1.csv")

    #Create a list of column names (Insert row number column at beginning later)
    lst = list(df.columns.values)


    #Identify column data type

    print(df.dtypes)

CSV 文件如下所示: CSV File:

我面临的问题是,当我调用打印语句时,“日期”列和“位置”列都作为对象返回。对于该项目,我需要将“位置”列标识为字符串,并将“日期”列标识为日期(或 Python 中的 DateTime?),我理解可以通过规范化日期来完成格式?

任何帮助将不胜感激!

【问题讨论】:

  • 感谢您的回复!我收到一条错误消息,提示“'parse_dates' 参数只接受布尔值、列表和字典”。我应该改用 from_csv 吗?
  • 你在 read_csv 中使用parse_dates=['Date'] 吗?

标签: python csv pandas dataframe


【解决方案1】:

我认为您需要read_csv 中的parse_dates 参数:

import pandas as pd
from pandas.compat import StringIO

temp=u"""Date
1-Mar-16
13-1-2015
5/2/16"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), parse_dates=['Date'])
print (df)
        date
0 2016-03-01
1 2015-01-13
2 2016-05-02

print (df.Date.dtypes)
datetime64[ns]

但如果有一些非标准值使用to_datetime 和参数errors='coerce' 将它们替换为NaTNaN 用于日期时间):

import pandas as pd
from pandas.compat import StringIO

temp=u"""Date
date20150109
1-Mar-16
13-1-2015
5/2/16"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp))
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
print (df)
        Date
0        NaT
1 2016-03-01
2 2015-01-13
3 2016-05-02


print (df.Date.dtypes)
datetime64[ns]

【讨论】:

  • 谢谢。你能解释一下 errors='coerce' 到底在做什么吗?这是什么意思/表明?
  • to_datetime 对于无法解析为日期时间的值,它不会返回错误。所以所有这些值都转换为 NaT。是不是更清楚了?
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 2016-12-07
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多