当前位置: 首页 > 知识库问答 >
问题:

数据帧中的日期字段在导出后删除前导0

巫马庆
2023-03-14

我有一个包含以下日期字段的Dataframe:

463    14-05-2019
535    03-05-2019
570    11-05-2019
577    09-05-2019
628    08-08-2019
630    25-05-2019
Name: Date, dtype: object

我必须将其格式化为DDMMAAAA。这是我在循环中所做的事情(用于idx,row在df.iterrows():):

>

  • 我正在使用regex删除\-字符:

    df.at[idx,'date']=re.sub('\-','',df.at[idx,'date'])

    df[“date”]=df[“date”]。apply(lambda x:“{0:0>8}”。format(x))

    但是,即使df['date']字段在df上有8个前导0的数字,在将其导出到csv时,导出文件上的前导0将被删除,如下所示。

    df.to_csv(path_or_buf=report, header=True, index=False, sep=';')
    

    CSV中的字段:

    Dt_DDMMAAAA
    30102019
    12052019
    7052019
    26042019
    3052019
    22042019
    25042019
    2062019
    

    我知道我一定是在这里的某个地方错过了要点,但我就是搞不清楚问题是什么(或者它是否是一个问题,而不是一个被误用的方法)。

  • 共有1个答案

    葛鸿轩
    2023-03-14

    IMO最简单的方法是在写入CSV时使用date_format参数。这意味着您需要预先使用pd.to_datetime将“date”列转换为datetime

    (df.assign(Date=pd.to_datetime(df['Date'], errors='coerce'))
       .to_csv(path_or_buf=report, date_format='%d%m%Y', index=False))
    

    这是指纹,

    Date
    14052019
    05032019
    05112019
    05092019
    08082019
    25052019
    

    有关to_csv参数的更多信息,请参见将pandas DataFrame写入CSV文件。

     类似资料:
    • 问题内容: 我想删除十进制数字中的前导零。 所以我想输出应该是 没有 。我尝试过不工作,我也尝试过正则表达式!没有结果!是的,我正在使用BigDecimal。 问题答案: 试试这个

    • 问题内容: 我有一个包含两个字段(国家和ISO代码)的表: 在某些行中,第二个字段在开头和/或结尾处都有空格,这会影响查询。 有没有一种方法(在SQL中)遍历表并查找/替换field2中的空格? 问题答案: 您正在寻找TRIM。

    • 我使用引导日期选择器的交付日期。但是我想在当前日期之后禁用两个日期,以便下单后至少需要两天时间准备产品。

    • 问题内容: 我正在尝试使用MessageDigest生成MD5总和。我有以下代码。 这不会返回32个字符串,而是一个31个字符串 预期的字符串是 输出中缺少前导0。 我尝试了另一种方法 和输出是预期的。 我检查了文档,然后Integer.toString根据它进行转换 使用Character.forDigit提供的数字到字符的映射,并在适当时添加减号。 在Character.forDigit方法中

    • 问题内容: 我有一个以许多空格开头的文本字符串,介于2和4之间。 删除前导空格的最简单方法是什么?(即删除某个字符之前的所有内容?) 问题答案: 该方法将删除以字符串开头的前导空格,换行符和制表符: 编辑 正如balpha在注释中指出的那样,为了 仅从 字符串开头删除空格,应使用:

    • 我有一个df,在许多行和列中,'-1'出现,这是错误的数据。我试图按列删除: df.drop(df[df['region']==-1].index) 但想知道是否有办法为整个df一次做到这一点?