Подтвердить что ты не робот

Преобразовать на сегодняшний день с помощью параметра formatters в 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
    }
  )
)

Но я также хочу отформатировать дату на этом шаге. Я попытался просмотреть здесь для того, что я искал, но параметры datetime не казались, что они будут работать в том, что я пытаюсь сделать, а создание настраиваемой опции немного нарушает рамки для моей целевой аудитории.

Можно ли сделать это простым способом?

4b9b3361

Ответ 1

Оказывается, это невероятно просто, как только вы осознаете, как работает функция...

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