所以基本上這段代碼:
df.iloc[df[(df.Handcap == 2) | (df.Handcap == 3 ) | (df.Handcap == 4)].Handcap.index, 11] = 1
僅適用,也就是將值分配給滿足特定條件的某些單元格,如果我在 pandas 中運行此代碼之前沒有使用dropordelete方法,例如:
del df['ID']
為什么會發生這種情況,我該如何克服這個問題?
uj5u.com熱心網友回復:
您可以使用loc相反的方法:
mask = (df.Handcap == 2) | (df.Handcap == 3 ) | (df.Handcap == 4)
df.loc[mask, df.columns[11]] = 1
uj5u.com熱心網友回復:
DataFrame.iloc與將掩碼轉換Series.isin為 numpy 陣列一起使用:
df.iloc[df.Handcap.isin([2,3,4]).to_numpy(), 11] = 1
如果需要洗掉 rowsmatch 或不匹配的條件boolean indexing:
df1 = df[df.Handcap.isin([2,3,4])]
df2 = df[~df.Handcap.isin([2,3,4])]
uj5u.com熱心網友回復:
你需要使用boolean indexingwith DataFrame.loc, wihtout .index。我們也可以使用Series.isin
df.loc[df.Handcap.isin([2,3,4]), df.columns[11]] = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444011.html
上一篇:熊貓列拆分但忽略特定模式的拆分
