使用pandas中的格式化参数转换为日期to_string

问题描述:

我知道有几种方法可以将列转换为日期对象,但是我正在寻找的是一种在同时格式化其他列的同时这样做的方法。说我有以下数据帧:使用pandas中的格式化参数转换为日期to_string

import pandas as pd 

url = "https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv" 
df = pd.read_csv(url) 
df["date"] = list(range(42005, 42005+len(df))) 

我试图做到的,是使用某种格式打印这些数据的能力,所以我可以做类似如下:

print(
    df 
    .head(10) 
    .to_string(
    formatters={"total_bill": "${:,.2f}".format, 
       "tip": "${:,.2f}".format 
    } 
) 
) 

但我也想在这一步中格式化日期。我试图通过here寻找我正在寻找的内容,但日期时间选项似乎并不像我想要做的那样工作,并且构建自定义选项对于目标受众有点超出范围。

是否有可能以简单的方式做到这一点?

+1

对于它的价值,我要做到这一点的原因是因为我组建了一个Python的教程SAS用户为我的同事,所以我试图尽可能多地比较。我意识到这不太可能需要在实践中完成,但我希望能够在教程中显示它,如果可能的话。 – brittenb

+0

你看过吗?例如,https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior'%B'将输出月份作为文本而不是数字。另外,你能否澄清日期来自哪里?那是在数据库中,还是打算使用当前的日期时间? –

+0

@XanderLuciano能够使用'strftime'或'strptime'会很棒,但我需要能够在'to_string'函数中使用它,我无法弄清楚如何做到这一点。这里的目标是允许用户在这一步中格式化所有数据。日期数据将在数据库本身中。如果它已经是日期格式,例如“01/01/2016”,则不需要处理。如果是整数格式,比如'01012016',那么我已经知道如何去做。自从时代以来,我只需要这些。 – brittenb

事实证明,一旦你实现的功能实际上是如何工作的,这是非常容易...

print(
    df 
    .head(10) 
    .to_string(
     formatters={"total_bill": "${:,.2f}".format, 
        "tip": "${:,.2f}".format, 
        "date": lambda x: "{:%m/%d/%Y}".format(pd.to_datetime(x, unit="D")) 
     } 
    ) 
) 

    total_bill tip  sex smoker day time size  date 
0  $16.99 $1.01 Female  No Sun Dinner  2 02/08/2017 
1  $10.34 $1.66 Male  No Sun Dinner  3 02/09/2017 
2  $21.01 $3.50 Male  No Sun Dinner  3 02/10/2017 
3  $23.68 $3.31 Male  No Sun Dinner  2 02/11/2017 
4  $24.59 $3.61 Female  No Sun Dinner  4 02/12/2017 
5  $25.29 $4.71 Male  No Sun Dinner  4 02/13/2017 
6  $8.77 $2.00 Male  No Sun Dinner  2 02/14/2017 
7  $26.88 $3.12 Male  No Sun Dinner  4 02/15/2017 
8  $15.04 $1.96 Male  No Sun Dinner  2 02/16/2017 
9  $14.78 $3.23 Male  No Sun Dinner  2 02/17/2017 
+1

@那么你现在得到赏金了吗? o.0赏金如何工作? – AsheKetchum

+1

@asheketchum被提出的赏金是我自己的名声,所以我想我只是得到那个代表,因为我能够最终回答我自己的问题。如果其他人提供了他们的代表作为赏金,我想它会有点不同。 – brittenb

+0

@asheketchum事实证明我没有得到我的名声...... – brittenb