簡體   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