Python - 导出到excel时格式化日期值

时间:2017-05-02 18:46:42

标签: python excel format

df1 = pd.DataFrame(
          columns=["A", "B", "C"], 
          data=[['2017-01-01',np.nan, "ok"], ['2017-02-01',8,"fine"], ['2017-03-01',100,np.nan]])
df1.to_excel('test.xlsx', index=False)

enter image description here

我有一个数据帧,列是字符串。我想将df导出为ex​​cel,并将列A作为日期类型,格式为DDMMMYYYY(即代替'2017-01-01'我需要'01JAN2017')。

我尝试了两件不起作用的事情:

df1['A'] = pd.to_datetime(df1['A']).dt.strftime('%d%b%Y')

df1['A'] = pd.to_datetime(df1['A'], format="%d%b%Y")

怎么做?

3 个答案:

答案 0 :(得分:1)

我有一个类似的用例。我用过熊猫和arrow

也许是这样的?

import pandas as pd
import numpy as np
import arrow

df1 = pd.DataFrame(
    columns=["A", "B", "C"],
    data=[
        ['2017-01-01',np.nan, "ok"],
        ['2017-02-01',8,"fine"],
        ['2017-03-01',100,np.nan]
    ]
)

df1['A'] = df1['A'].apply(
    lambda val: arrow.get(val).format("DDMMMYYYY").upper()
)

df1.to_excel('test.xlsx', index=False)

答案 1 :(得分:0)

在Excel中,将A列格式化为自定义格式:

dd*mmm*yyyy

星星应该不允许在日期元素之间出现空格或运算符。

另外,read this用于另一种格式化。

答案 2 :(得分:0)

您可以先将其解析为datetime对象,然后将其转换为所需的格式

from datetime import datetime
df1['A'] = datetime.strptime(df1['A'], '%Y-%m-%d').strftime("%d%b%Y").upper()