pandasで、データフレームに対し、同様のフォーマットだったら全部置換したい、的な手法=applymap

はい、データフレーム使ってますか?
便利ですね、pandas。

ということで、今回の要件はこんな感じです。

要件:
データフレーム上では全てのデータをそのまま扱いたいが、
csvなどで出力するときは日付のフォーマットを全部固定差し替えしたい。

調べてみると、applymapというものが使えそうなんですが、これ指定の仕方がちょっと面白い。

df = df.applymap(function)

直接、function(関数)をぶっこみます。
ここで指定する関数はlambdaでも、defでもよいのですが、こんな感じになります。


def _format_date_time(value):
if isinstance(value, datetime):
return value.strftime('%Y/%m/%d')
else:
return value


formatted = {変換したいdf}.applymap(_format_date_time)

このようにすることで、内部関数「_format_date_time」をapplymapに突っ込んで、
変換したいdfの中身のうち、datetime型のものだけ出力を「YYYY/MM/DD」型に置換します。

慣れるとかなり強力です。