【问题标题】:How to change datetime format in dataframe with using pandas? [duplicate]如何使用熊猫更改数据框中的日期时间格式? [复制]
【发布时间】:2018-05-13 14:52:06
【问题描述】:

我是熊猫学习者。

我有一个包含“DATE”列的数据框,该列的日期时间格式类似于“11/1/2017 1:00”。我想将日期时间格式从 '11/1/2017 1:00' 更改为 '1-Dec-17 1:00',我尝试了以下代码:

dir_path = os.path.dirname(os.path.realpath("__file__"))
print(dir_path)

def parse_dates(x):
    return datetime.strptime(x, "%d-%b-%y %H:%M")

df = pd.read_csv(dir_path+"/TEST.csv", parse_dates=['DATE'],date_parser=parse_dates)

但它显示错误:

ValueError:时间数据 '11/1/2017 1:00' 与格式 '%d-%b-%y 不匹配 %H:%M'

我也尝试转换数据框,但失败了:

df=pd.read_csv(dir_path+"/TEST.csv")
df['DATE'] = pd.to_datetime(df['DATE'],format='%d-%b-%y %H:%M')

再次显示错误:

ValueError:时间数据 '11/1/2017 1:00' 与格式 '%d-%b-%y 不匹配 %H:%M'(匹配)

【问题讨论】:

    标签: python pandas datetime dataframe


    【解决方案1】:
    df=pd.DataFrame({'Time':[ '11/1/2017 1:00', '11/1/2017 1:00', '11/1/2017 1:00', '11/1/2017 1:00']})
    df.Time=pd.to_datetime(df.Time).dt.strftime('%d-%b-%y %H:%M')
    df
    Out[870]: 
                  Time
    0  01-Nov-17 01:00
    1  01-Nov-17 01:00
    2  01-Nov-17 01:00
    3  01-Nov-17 01:00
    

    【讨论】:

    • 这有帮助。谢谢文。
    • @HavenShi yw :-)
    【解决方案2】:

    简单的答案是您对 strptime 函数的 format 参数是错误的。你想要datetime.strptime(x, "%m-%d-%Y %H:%M")

    另外,请确保您的所有数字都被填充(即对于月份,请确保一月的数字是 01 而不是 1。分钟和天的想法相同),否则这可能会失败。

    我建议您查看python page for strptime formatting,以了解有关如何格式化日期的更多信息。

    【讨论】:

    • 为我做到了!感谢您的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2020-11-12
    • 1970-01-01
    • 2017-06-28
    相关资源
    最近更新 更多