[pandas] DataFrameから1カラムのDataFrameを抽出するのに、[[ ]]とするのが便利な件

はじめに

先日、あるDataFrameから1行を抜き出して、1行だけのDataFrameを作りたいシーンに直面しました。

1カラムを抜き出すといえば、df['col_1']といった方法を思いつきがちですが、これではSeries型になってしまい、DataFrame型に変更するのに、もうひと手間かかってしまいます。

ilocメソッドを使えば、いきなりDataFrame型にできますが、他にどういった方法があるのか調べて、めっちゃ簡単な方法があったで、共有します。

いきなり結論

サクッと動作確認

いきなり結論です。

下の実行ボタンを押すと動作確認ができます。

また、コードを変更して実行することもできるので、色々試してもらえると嬉しいです。

解説

DataFrameから1カラムを抜き出す方法として、初歩の初歩として使われるのが、res_1の方法です。

しかし、先述の通りこの方法だとSeries型になってしまいます

今回は、DataFrame型として抜き出したいということで、調べてみると以下の方法がありました。

res_2 = df[['col_2']]

15行目でtypeしている通り、この方法であればDataFrame型で抜き出すことができます。

[]ではなくて、[[]]とするなんて、なんだかハックっぽくて良いですね。笑

おまけ

いつも使っているlocメソッドを使った場合

res_3 = df.loc[:, 'col_2']

上記のような形です。

これであれば、Series型ではなくDataFrame型で抽出することが可能です。

まあ、これで良いじゃないかと言われればそうかもしれませんが。。。

さいごに

今日は、DataFrameから1カラムのDataFrameを抽出する方法について、記事にしました。

最後まで読んで頂いて、ありがとうございました!

PON

PON

30代で、完全未経験から独学でWeb系エンジニアになった人。 前職では、超絶ブラック企業にはまり込んでしまい、年間1200時間の残業をしていたが、娘が生まれたことで我に返って転職を決意。 現在は、大阪にあるベンチャー企業の自社開発プロジェクトで、リードエンジニアとして奮闘中。 主戦場はバックエンドで、Pythonでのデータ分析が武器。 とは言いつつ、SPAのフロントエンドを実装したり、インフラ設計したり、スクラム開発でプロジェクト運営したりするなんでも屋。 いつも、ググってきては誰かが書いてくれた記事を見て開発していたが、もらってばかりでなく世の中に返すこともしたいと思い、技術ブログをはじめる。 妻と1歳になる娘の3人暮らし。 最近は一日一食。 何かご用件がある方は、TwitterのDMからどうぞ。