[実行環境付き]pandasで時系列データを結合する

pandas

本記事はブラウザ上でPythonを実行できます。

書式の異なるstringで入ってきた時系列データを処理する際に地味に詰まったので、備忘録として載せておきます。

- pandas import pandas as pd df_sales = pd.DataFrame( { "date": [ "2022-06-01", "2022-07-01", "2022-08-01", ], "sales": [1234, 2345, 3456], } ) df_sales import pandas as pd df_temperature = pd.DataFrame( { "date": [ "2022/06/01", "2022/07/01", "2022/08/01", ], "temperature": [20.5, 25.2, 30.5], } ) df_temperature

こうした時系列のデータに対しては pd.to_date でpandasのdatetime型に合わせることが推奨されます。

print(pd.to_datetime(df_sales["date"], format='%Y/%m/%d')) df_sales.loc[:, "date"] = pd.to_datetime(df_sales["date"], format='%Y-%m-%d') df_temperature .loc[:, "date"] = pd.to_datetime(df_temperature ["date"], format='%Y/%m/%d')

dtypedatetime64[ns] 型で、各要素は Timestamp型になります。

print(f"dtype: {df_sales['date'].dtype}") print(f"each element: {df_sales['date'][0]}")

datetimeにしておくと、書式を気にせずmerge等の処理が行えます。

pd.merge(df_sales, df_temperature, left_on="date", right_on="date")

コメント

タイトルとURLをコピーしました