0
我想在pandas.DataFrame
放棄某些特定行,而似乎pandas.Series.drop()
。什麼我已經試過如下:一些誤解約`pandas.series.drop()`
In[1]:
a_pd = pd.DataFrame(np.array([[1,2,3], [2,'?','x'],['s','d',4]]), columns=list('abc'))
a_pd
Out[1]:
a b c
0 1 2 3
1 2 ? x
2 s d 4
In[2]:
a_pd['b'].drop(a_pd['b'] == '?', inplace=True)
a_pd
out[2]:
a b c
0 1 2 3
1 2 ? x
2 s d 4
爲什麼它是相同a_pd
??? 後來我試過pandas.DataFrame.drop
,結果是更驚人:
In[3]:
b_pd = a_pd.drop(a_pd['b'] == '?')
out[3]:
a b c
1 2 ? x
2 s d 4
發生了什麼?我簡直不敢相信我的眼睛。雖然我可以通過簡單地使用a_pd[a_pd['b'] != '?']
輕鬆選擇我想要的,但我仍然想嘗試drop()
。
順便說一句,你可以共享,從jupyter筆記本複製內容的招數?看來我不能直接複製在Chrome中打開的jupyter的輸出。 –
拖放在索引上工作,所以你必須通過索引向量。 'a_pd.drop(a_pd [a_pd ['b'] =='?']。index)' - 請不要這樣做是真正的代碼。這是醜陋的,難以閱讀。改用切片符號'a_pd = a_pd.loc [a_pd.b!='?',:]'。 – cel
我嘗試過'a_pd.drop(a_pd [a_pd ['b'] =='?']。index)',但發生了錯誤'IndexingError:Unalignable boolean Series key provided provided' –