pandas DataFrameからのカラム削除

DataFrameのカラムを削除する際には、以下のようにしています。

del df['column_name']

とすると、うまくいきます。なぜ次のようにできないのでしょうか?

del df.column_name

*列/Seriesにはdf.column_nameでアクセスできるので、これで動作すると思われます。

pandasでこれを行うには、dropを使うのが一番です。

df = df.drop('column_name', 1)

ここで、1 の番号です (行は 0 、列は 1 です)。

df`を再割り当てすることなく、列を削除するには次のようにします。

df.drop('column_name', axis=1, inplace=True)

最後に、列ラベルではなく、列番号でドロップするには、次のようにして、例えば、1、2、4列目を削除します。

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 
解説 (17)
ソリューション

お察しの通り、正しい構文は

del df['column_name']

デル df.column_nameを単純に動作させるのは難しいですが、これは Python の構文上の制限の結果です。del df[name]はPythonでは隠れてdf.__delitem__(name)と翻訳されてしまいます。

解説 (6)

常に[]の表記を使用するのが良い方法です。その理由の一つは、属性表記(df.column_name)が番号付きインデックスには使えないからです。

In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])

In [2]: df[1]
Out[2]:
0    2
1    5
Name: 1

In [3]: df.1
  File "", line 1
    df.1
       ^
SyntaxError: invalid syntax
解説 (0)