[英]Split a Pandas dataframe, keep both parts
我正在通過導入 a.csv 文件創建一個 dataframe。 然后我需要根據某些條件刪除行。 因為刪除的行數非常少,所以通過檢查已刪除的內容而不是剩余的內容來驗證條件更容易。 我最終做了這樣的事情:
dfcd=df.loc[(~df.Course_Code.str.contains('MG')) & (~df.Course_Code.str.contains('DE'))]
df=df.loc[(df.Course_Code.str.contains('MG')) | (df.Course_Code.str.contains('DE'))]
但這感覺非常笨拙,並且隨着條件變得越來越復雜,我擔心我會錯誤地編寫逆條件(閱讀另一個關於 SO 的線程我意識到我可以通過使用另一組帶有 ~ 的括號來簡化上述內容,但無論如何)
是否有一個命令會創建兩個數據幀,一個條件為真,另一個為假? 就像是:
df,dfcd=df.<another_command>[(df.Course_Code.str.contains('MG')) | (df.Course_Code.str.contains('DE'))]
還是有另一種更好的方法來做到這一點?
你可以使用|
對於正則表達式or
,因此可以通過過濾條件來簡化您的解決方案,如果條件得到False
s,則可以通過~
為匹配行反轉條件:
m = df.Course_Code.str.contains('MG|DE')
#same like
# m = (df.Course_Code.str.contains('MG')) | (df.Course_Code.str.contains('DE'))
df1, df2 = df[m], df[~m]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.