[Python初心者]内包表記によりデータフレームに列を追加する

  • 目的

内包表記を使ってデータフレームに列データを追記する

データフレームの特定の列データを加工または列データの条件に従って
列データを新たに追加したいケースがちょくちょくあります。
例えばこんな。

for i in df_うまぴょい住所録.index:
    df_うまぴょい住所録.loc[i,'出走記録'] = 'あり' if (df_うまぴょい住所録.loc[i,'出場競馬場'] in s_競馬場) else None

上記は住所録の各馬の出場競馬場の列データが、集合「競馬場」にある場合には「あり」、ない場合にはNoneが、新たに住所録の「出走記録」列に追記されます。
まあね。確かにfor文を使ってできるんですけど、Pythonらしさをもう少しだせるのではないかと。なんかこのfor文が匂うんですよね。
というわけで、いろいろ試行した結果、内包表記で同じことができました。その結果がこれ。

df_うまぴょい住所録['出走記録']=[ 'あり' if (df_うまぴょい住所録.loc[i,'出場競馬場'] in s_競馬場) else None\
                         for i in df_うまぴょい住所録.index] 

なにが嬉しいかというと、locを一回しか使わなくて済むのと、for文だと二行だったのが、なんと一文で書けるところですね。
(可読性の問題あるけど、書き間違えが減る、のかな。文法的に正しいのかどうかは知らん)
左辺のdf_うまぴょい住所録['出走記録']のところが、全データがNoneになりゃしないかとドキドキしますね。

この記事が気に入ったらサポートをしてみませんか?