【问题标题】:Why is it not possible to store DD-MM-YYYY format in date format?为什么不能以日期格式存储 DD-MM-YYYY 格式?
【发布时间】:2022-01-11 11:21:19
【问题描述】:

我正在尝试将“YYYY-MM-DD”格式的日期类型信息转换为“DD-MM-YYYY”,但我想保留日期类型,但我无法告诉您为什么?还是我做错了什么?

import moment

df = pd.DataFrame({"Date": ["2022-12-10", "2022-12-11", "2022-12-12"]})
df["Date"] = [moment.date(s).format('D-M-YYYY') for s in df["Date"]]

print(df)
print(df["Date"].dtypes)

         Date
0  10-12-2022
1  11-12-2022
2  12-12-2022
object
import pendulum as pdl

df = pd.DataFrame({"Date": ["2022-12-10", "2022-12-11", "2022-12-12"]})
df["Date"] = [pdl.from_format(s, 'YYYY-MM-DD', tz='America/Sao_Paulo').format('D-M-YYYY') for s in df["Date"]]

print(df)
print(df["Date"].dtypes)

 Date
0  10-12-2022
1  11-12-2022
2  12-12-2022
object

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    按照您尝试过的解决方案的格式,正确的方法(不是最有效的)是:

    import datetime
    
    df["Date"] = [datetime.datetime.strptime(s, '%Y-%m-%d').strftime('%d-%m-%Y') for s in df["Date"]]
    

    如果您需要提高解决方案的效率,理想的做法是使用矢量化操作,例如:

    df['Date'] = pd.to_datetime(df['Date'])
    df['Date'] = df["Date"].dt.strftime("%d-%m-%Y")
    

    或者在一行中:

    df['Date'] = pd.to_datetime(df['Date']).dt.strftime("%d-%m-%Y")
    

    【讨论】:

    • 问题是Why is it not possible to store DD-MM-YYYY format in date format? - 答案是because python not support it。无法格式化 DD-MM-YYY 和日期或日期时间。只有问题中提到的字符串。
    • 谢谢@jezrael。
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多