簡體   English   中英

熊貓根據列名和內容刪除列

[英]Pandas drop columns based on column name AND content

我有一個這樣的數據框:

df = pd.DataFrame([[1,2,np.nan,np.nan,5],[3,4,np.nan,np.nan,6]],columns=['a','b','c','Unnamed: 4','Unnamed: 5'])

df
Out[16]: 
   a  b   c  Unnamed: 4  Unnamed: 5
0  1  2 NaN         NaN           5
1  3  4 NaN         NaN           6

我想刪除全部都是nan並且名稱中帶有“ Unnamed:”的列(從文件中導入數據框時,標題中沒有名稱的列經常會發生這種情況)。 所需的輸出:

   a  b   c  Unnamed: 5
0  1  2 NaN           5
1  3  4 NaN           6

我可以:

df[[col for col in df.columns if 'Unnamed: ' not in col]]
Out[18]: 
   a  b   c
0  1  2 NaN
1  3  4 NaN

要么:

df.dropna(how='all',axis=1)

Out[19]: 
   a  b  Unnamed: 5
0  1  2           5
1  3  4           6

是否有一種pythonic的方式同時完成這兩項操作(通過AND而不是OR連接)?

filter + isnull + drop

首先過濾數據框以獲取列標簽,然后計算均為空:

nulls = df.filter(like='Unnamed').isnull().all()

df = df.drop(nulls[nulls].index, axis='columns')

print(df)

   a  b   c  Unnamed: 5
0  1  2 NaN           5
1  3  4 NaN           6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM