繁体   English   中英

根据列名删除 Pandas Dataframe 列

[英]Dropping Pandas Dataframe Columns based on column name

我有一个带有无关信息的 Pandas 数据框 df。 无关信息存储在名称包含“PM”的列中。 我想删除这些列,但我不确定如何删除。 下面是我尝试做到这一点。 但是,我收到此错误消息:AttributeError: 'numpy.float64' object has no attribute 'PM'。 我不确定如何解释此错误消息。 我也不明白为什么消息中提到了 numpy,因为数据帧 df 是一个熊猫对象。

for j in range(0,len(df.columns)-1):
 df.iloc[0,j].str.contains("PM"):
   df.drop(j, axis=1)

AttributeError: 'numpy.float64' 对象没有属性 'PM'

如果需要删除带有PM列,它就像选择没有PM列一样,所以使用:

df.loc[:, ~df.columns.str.contains("PM")]

开箱即用的解决方案:

df.drop(df.filter(like='PM').columns, axis=1)

使用带有filter regex

df.filter(regex='^((?!PM).)*$')

这是这里最短的解决方案。

使用空数据框

df = pd.DataFrame(columns=['a','b','ABCPMYXZ','QWEPMQWE','c','d'])
df
df = df[[i for i in df.columns if not 'PM' in i]]
df

在此处输入图片说明

根据我的理解,您想要删除列,因此最初您应该将所有列名存储在一个列表中。 如果存在“PM”,则接下来从列表中删除元素,然后最后删除列。

columns = list(df.columns.values)
[columns.remove(col) for col in columns if 'PM' in col]
df.drop(columns=columns, axis=1, inplace=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM