要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
当前回答
Pandas 0.21+答案
Pandas 0.21版略微更改了drop方法,以包括索引和列参数,以匹配重命名和重新索引方法的签名。
df.drop(columns=['column_a', 'column_c'])
就我个人而言,我更喜欢使用axis参数来表示列或索引,因为它是几乎所有panda方法中使用的主要关键字参数。但是,现在您在0.21版中增加了一些选择。
其他回答
在Pandas中执行此操作的最佳方法是使用drop:
df = df.drop('column_name', axis=1)
其中1是轴号(0表示行,1表示列。)
或者,drop()方法接受索引/列关键字作为指定轴的替代方法。所以我们现在可以做:
df = df.drop(columns=['column_nameA', 'column_nameB'])
这是在v0.21.0中引入的(2017年10月27日)
要删除列而不必重新分配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
同时使用列的“text”语法:
df.drop(['column_nameA', 'column_nameB'], axis=1, inplace=True)
使用数据帧和切片的iloc函数删除列,当我们有一个带有不需要的值的典型列名时:
df = df.iloc[:,1:] # Removing an unnamed index column
这里0是默认行,1是第一列,因此:,1:是删除第一列的参数。
如果原始数据帧df不太大,没有内存限制,只需要保留几列,或者,如果事先不知道不需要的所有额外列的名称,那么不妨创建一个只包含所需列的新数据帧:
new_df = df[['spam', 'sausage']]
从版本0.16.1开始,您可以
df.drop(['column_name'], axis = 1, inplace = True, errors = 'ignore')
点语法在JavaScript中有效,但在Python中无效。
Python:del df['column_name]JavaScript:del df['column_name]或del df.column_name