【Python+Pandas】『既存の列』から『新しい列』をデータフレームに追加する方法
今回はPython+Pandasのデータフレーム内にある『既存の列』を元に『別の新しい列』を作成するサンプルコードをご紹介したいと思います。
準備
pip
pip install pandas
テスト環境はwindows10 python3.7を使用しています
シンプルな例
import pandas as pd # テストデータの読み込み df = pd.read_excel("テストデータ.xlsx", parse_dates=True) df
まず今回は例として『価格』という名前の列がある、この様なデータフレームを用意しました。
新しい列の追加
このデータフレームに『税込み価格』を追加するには以下のコードを追加します
# 新しい列の追加 df["税込み価格"] = df["価格"] * 1.1
この様に既存の列を利用して新しい列を簡単にすることができます。
応用:datetime型列を元に『年・月・日・曜日・時刻・分』列を追加する
次はdatetime型として保存されている列を元に『年・月・日・曜日・時刻・分』列をなどを新たな列として追加してみたいと思います。
import pandas as pd # テストデータの読み込み df = pd.read_excel("テストデータ.xlsx", parse_dates=True) #df['date'] = pd.to_datetime(df['date']) # サブグループの追加 df["year"] = df["date"].dt.year df["month"] = df["date"].dt.month df["weekday_name"] = df["date"].dt.day_name() df["dayofweek"] = df["date"].dt.dayofweek df["day"] = df["date"].dt.day df["hour"] = df["date"].dt.hour df["minute"] = df["date"].dt.minute df["second"] = df["date"].dt.second # 日本時間に変更する場合 # df["date"] = df["date"] + datetime.timedelta(hours=9) df
その他
AttributeError: 'DatetimeProperties' object has no attribute 'weekday_name'
『dt.weekday_name』でエラーが出る場合は
dt.day_name()
を使うとよいそうです。
stackoverflow.com
追記
AttributeError: Can only use .dt accessor with datetimelike values
上記エラーが出る場合は、date列を以下のように一度変換するとよいみたいです。
# date列の変換 df['date'] = pd.to_datetime(df['date'], errors='coerce') # サブグループの追加 df["year"] = df["date"].dt.year df["month"] = df["date"].dt.month df["weekday_name"] = df["date"].dt.day_name() df["dayofweek"] = df["date"].dt.dayofweek df["day"] = df["date"].dt.day df["hour"] = df["date"].dt.hour df["minute"] = df["date"].dt.minute df["second"] = df["date"].dt.second