わかりにくいタイトルになってしまいましたが、そのままの記事です。汗
結論的には、
ブラケット(角括弧)によるアクセスにおいて
ブラケットが1つだとSeries,ブラケットを重ねるとDataFrameとして取り出せます。
#Seriesで取れる
df["col"] # df.colも同様
#DataFrameで取れる
df[["col"]]
Seriesで取り出したものをDataFrameへ変換することも可能ですが、ブラケットを重ねるのがお手軽です。
複数列を指定して取得する場合は、ブラケットを重ねることが必須となので必ずDataFrameで取れます。
df[["col1", "col2", "col3"]] #DataFrameで取れる
なお、Seriesで取れてしまうことで都合が悪いケースとしては、sklearnの予測モデルにインプットする場合が挙げられます。
1変数でモデルを作るときに、Seriesでインプットすることで次のようなエラーが出力されます。
ValueError: Expected 2D array, got 1D array instead:
~~
Reshape your data either using array.reshape(-1, 1) ~~
以上です。