2017-02-20 25 views
24

我知道有幾種方法可以將列轉換爲日期對象,但是我正在尋找的是一種在同時格式化其他列的同時這樣做的方法。說我有以下數據幀:使用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

回答

18

事實證明,一旦你實現的功能實際上是如何工作的,這是非常容易...

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