如何從pandas中移除某幾筆(列)含有特定字詞
請教在資料前處理中,碰過某幾筆數值型資料理頭, 有某一個特徵含有像Error、Bad等字詞, 如果想把這些資料(某幾列)移除的話, pandas該如何寫程式碼呢?
回答列表
-
2021/06/24 下午 05:46Jaio贊同數:1不贊同數:0留言數:3
底下的程式碼想法為,把沒有包含 nan 的列取出(假設我們不要 nan 的字詞),再製成新的 dataframe。 ```python import pandas as pd df = pd.DataFrame([[1,2,3,4,5,'bad','cat'],[2,4,6,8,10,'nan','cat'],[3,5,7,9,11,'happy','dog'],[2,4,6,8,10,'nan','chicken']], columns=['feature1','feature2','feature3','feature4','feature5','feature6','feature7']) df_new_value=[] for i in df.values: if 'nan' not in i: # 若有多個字詞可以用 or df_new_value.append(i) df = pd.DataFrame(df_new_value, columns=df.columns) ``` 可以試試看喔
-
2021/06/24 下午 11:55Benson Chen贊同數:2不贊同數:0留言數:2
提供兩種寫法供參考 ```python # 1. 用Mask data = { 'Col_A':[1, 2, 3, 4, 5], 'Col_B':['Error','Bad','Good','Bad','Good'], 'Col_C':pd.date_range(start='2021-01-01', end='2021-01-05') } df = pd.DataFrame(data) df = df[(df.Col_B != 'Bad')&(df.Col_B != 'Error')] ``` ```python # 2. 使用 for 迴圈 & drop data = { 'Col_A':[1, 2, 3, 4, 5], 'Col_B':['Error','Bad','Good','Bad','Good'], 'Col_C':pd.date_range(start='2021-01-01', end='2021-01-05') } df = pd.DataFrame(data) unwanted_str_list = ['Error', 'Bad'] for i in range(len(df)): if df['Col_B'].at[i] in unwanted_str_list: df = df.drop([i], axis=0) ```