要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
当前回答
如果原始数据帧df不太大,没有内存限制,只需要保留几列,或者,如果事先不知道不需要的所有额外列的名称,那么不妨创建一个只包含所需列的新数据帧:
new_df = df[['spam', 'sausage']]
其他回答
Use:
df.drop('columnname', axis =1, inplace = True)
或者你可以和
del df['colname']
基于列编号删除多个列的步骤
df.drop(df.iloc[:,1:3], axis = 1, inplace = True)
基于列名删除多个列的步骤
df.drop(['col1','col2',..'coln'], axis = 1, inplace = True)
总是使用[]符号是一个很好的做法。一个原因是属性表示法(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 "<ipython-input-3-e4803c0d1066>", line 1
df.1
^
SyntaxError: invalid syntax
在Pandas DataFrame中删除列的另一种方法
如果您不希望就地删除,则可以通过使用DataFrame(…)函数指定列来创建一个新的DataFrame:
my_dict = { 'name' : ['a','b','c','d'], 'age' : [10,20,25,22], 'designation' : ['CEO', 'VP', 'MD', 'CEO']}
df = pd.DataFrame(my_dict)
创建新的DataFrame作为
newdf = pd.DataFrame(df, columns=['name', 'age'])
你得到的结果和del/drop一样好。
Use:
columns = ['Col1', 'Col2', ...]
df.drop(columns, inplace=True, axis=1)
这将在位删除一个或多个列。请注意,inplace=True是在panda v0.13中添加的,在旧版本中不起作用。在这种情况下,您必须重新分配结果:
df = df.drop(columns, axis=1)
通过使用自动补全或“IntelliSense”而不是字符串文字来获得优势:
del df[df.column1.name]
# or
df.drop(df.column1.name, axis=1, inplace=True)
它适用于当前的Pandas版本。