簡體   English   中英

根據列表從熊貓系列中刪除行

[英]Drop rows from a pandas series based on a list

我希望能夠在一個 df 中生成索引 NaN 值的列表,然后使用該列表刪除一系列中的相應行。 目標是讓 df 和系列具有相同的行數

但是我一直被困在最后一部分。 如果我使用 drop(),則不會出現軸錯誤。 我試過 isin() 但我似乎沒有得到正確的結果

#create list of index of nan values in Garageyrblt
Index_nan_train = X_train[X_train['GarageYrBlt'].isna()].index.tolist()
# drop nan in garageyrblt X_train
X_train = X_train.drop(subset = ['GarageYrBlt'], axis = 0)
# use list to drop nan in garageyrblt Y_train
y_train = y_train.drop(['Index_nan_train'], axis = 0)

編輯:要添加更多詳細信息,數據來自 kaggle 練習,用於處理中級機器學習課程中的缺失值。

X_train 是具有輸入特征的 (1168,36) 數據框,y_train 是 (1168,) 系列,表示銷售價格

當您在兩者上處理相同的轉換時,更簡單的方法是將它們放在一起,直到完成清理並實際使用數據為止。

x_cols = X_train.columns
y_col = y_train.name
all = pd.concat((X_train, y_train), axis=1)
all = all.dropna(subset=["GarageYrBlt"])

X_train, y_train = all.loc[:,x_cols], all.loc[:,y_col]

或者使用difference索引方法:

nan_idx = X_train.loc[X_train["GarageYrBlt"].isna()].index
notna_idx = X_train.index.difference(nan_idx)

y_train = y_train.loc[notna_idx]

注意:如果您使用groupbyreset_index等操作索引,則對索引進行切片會讓您reset_index ,因此請注意該問題。

暫無
暫無

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

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