最近做一个系列博客,跟着*学Pandas。
以 pandas作为关键词,在*中进行搜索,随后安照 votes 数目进行排序:
https://*.com/questions/tagged/pandas?sort=votes&pageSize=15
Delete column from pandas DataFrame - 删除列
* 地址:https://*.com/questions/13411544/delete-column-from-pandas-dataframe
pandas 官方给出了对列的操作,可以参考:
http://pandas.pydata.org/pandas-docs/stable/dsintro.html#column-selection-addition-deletion
引子
DataFrame删除一个列可以采用
del df['column_name']
但是却不能采用
del df.column_name
首先, 运行del df['column_name']
时,python内部其实是运行了 df.__delitem__('column_name')
这个函数,实现了对列的删除。
而 del df.column_name 要做的是考虑删除Dataframe的一个属性,是不允许的。
drop
除了上面提到的 del df['column_name']
, 我们还可以采用drop
函数。
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop.html
# 按照列名删除
df.drop('column_name', axis=1, inplace=True)
# 根据索引删除
df.drop(df.columns[[0, 1, 3]], axis=1,inplace=True)
# 删除没有的列
df.drop(['col_name_1','col_name_2',...,'col_name_N'],inplace=True,axis=1,errors='ignore')
# errors='ignore', 表示如果要删除的列不在df中,则忽略该错误
inplace 属性
inplace = True
理解为就地修改原有DataFrame, 返回None
df = pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', [7,8, 9])], orient='index', columns=['one', 'two', 'three'])
df.drop(df.columns[[0]], axis=1, inplace=False)
two three
A 2 3
B 5 6
C 8 9
In [5]: df
Out[5]:
one two three
A 1 2 3
B 4 5 6
C 7 8 9
df.drop(df.columns[[0]], axis=1, inplace=True)
df
Out[7]:
two three
A 2 3
B 5 6
C 8 9
pop (新添加)
col_df = df.pop(col_names)