[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を抽出する方法について、記事にしました。

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

PON3

PON3

5年くらい前に、30代完全未経験から独学でWeb系のソフトウェアエンジニアになった人。 現在はフリーランスエンジニアとして、大阪の自宅からフルリモートで東京の自社開発企業のお仕事をしている。 主戦場はバックエンドで、Go言語でのAPI開発や、Pythonでのデータ分析が武器。 とは言いつつ、フロントエンドをSPAを実装したり、IaCでクラウドインフラの設計構築したり、スクラム開発でプロジェクト運営したりするなんでも屋。 いつも、ググってきては誰かが書いてくれた記事を見て開発していたが、もらってばかりでなく世の中に返すこともしたいと思い、技術ブログをはじめる。 妻と2歳になる娘の3人暮らし。 何かご用件がある方は、TwitterのDMからどうぞ。