[英]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).)*$')
這是這里最短的解決方案。
根據我的理解,您想要刪除列,因此最初您應該將所有列名存儲在一個列表中。 如果存在“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.