删除 DataFrame 中的列时,我使用:
del df['column_name']
这很有效。为什么我不能使用以下?
del df.column_name
由于您可以使用df.column_name
访问列 / Series,我希望这可以工作。
在 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
正如您所猜测的那样,正确的语法是
del df['column_name']
很难使del df.column_name
只是因为 Python 中的语法限制而工作。 del df[name]
被 Python 翻译成df.__delitem__(name)
。
使用:
columns = ['Col1', 'Col2', ...]
df.drop(columns, inplace=True, axis=1)
这将就地删除一个或多个列。请注意,在 pandas v0.13 中添加了 inplace inplace=True
,并且不适用于旧版本。在这种情况下,你必须重新分配结果:
df = df.drop(columns, axis=1)