Pandas选择指定列:如何排除特定列创建新DataFrame
反向选择列创建新DataFrame的几种方法
当然有啦!在Pandas里完全支持反向排除指定列来生成新DataFrame,不用手动列出来所有要保留的列,下面给你介绍几种常用的方法:
方法一:使用
drop()函数(最直观)
直接指定要移除的列,通过axis=1参数告诉Pandas我们要操作的是列(默认axis=0是行):# 排除Name和Race列,返回新的DataFrame,原df不受影响 df2 = df.drop(['Name', 'Race'], axis=1)如果想直接修改原DataFrame(不推荐,容易误操作),可以加上
inplace=True参数,但一般更建议保留原数据,用返回值接收新的DataFrame。方法二:列表推导筛选列
遍历原DataFrame的列名,只保留不在排除列表里的列:exclude_cols = ['Name', 'Race'] df2 = df[[col for col in df.columns if col not in exclude_cols]]这种方式灵活性很高,还可以加入额外的判断条件(比如筛选列名包含特定关键词的列)。
方法三:使用
columns.difference()
利用Pandas的列名集合差集功能,直接获取除指定列外的所有列:# 默认会返回排序后的列,如果要保持原列顺序,加上sort=False(Pandas 0.24+支持) df2 = df[df.columns.difference(['Name', 'Race'], sort=False)]
另外补充个小细节:你原来的正向选择写法其实可以简化,不需要再套一层pd.DataFrame()——df[['Age','Sex','Education']]返回的已经是DataFrame了,直接赋值就行:
df2 = df[['Age','Sex','Education']]
内容的提问来源于stack exchange,提问作者Rustem Sadykov
相关产品推荐
相关产品推荐

