DataFrameのカラムを削除する際には、以下のようにしています。
del df['column_name']
とすると、うまくいきます。なぜ次のようにできないのでしょうか?
del df.column_name
*列/Seriesにはdf.column_nameでアクセスできるので、これで動作すると思われます。
df.column_name
pandasでこれを行うには、dropを使うのが一番です。
drop
df = df.drop('column_name', 1)
ここで、1 は 軸 の番号です (行は 0 、列は 1 です)。
1
0
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
お察しの通り、正しい構文は
デル df.column_nameを単純に動作させるのは難しいですが、これは Python の構文上の制限の結果です。del df[name]はPythonでは隠れてdf.__delitem__(name)と翻訳されてしまいます。
を単純に動作させるのは難しいですが、これは Python の構文上の制限の結果です。del df[name]
df.__delitem__(name)
常に[]の表記を使用するのが良い方法です。その理由の一つは、属性表記(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
pandasでこれを行うには、
drop
を使うのが一番です。ここで、
1
は 軸 の番号です (行は0
、列は1
です)。df`を再割り当てすることなく、列を削除するには次のようにします。
最後に、列ラベルではなく、列番号でドロップするには、次のようにして、例えば、1、2、4列目を削除します。
お察しの通り、正しい構文は
デル df.column_name
を単純に動作させるのは難しいですが、これは Python の構文上の制限の結果です。del df[name]
はPythonでは隠れてdf.__delitem__(name)
と翻訳されてしまいます。常に
[]
の表記を使用するのが良い方法です。その理由の一つは、属性表記(df.column_name
)が番号付きインデックスには使えないからです。