2015-08-28 61 views
0

基本上我有一個設備清單列表,我需要做的是找出哪些是鏡像的,哪些不是。它現在被設備索引。從Pandas DataFrame中刪除具有匹配列但不包含索引的行

 Device        MedDescription 
    RWC6NOR1     amLODIPine (NORVASC) 2.5 mg Tab 
    RWC6NOR1 Carbidopa/Levodopa (SINEMET) 25 mg (100 mg) Tab 
    RWC6NOR1     Bisacodyl EC (DULCOLAX) 5 mg Tab 
    RWC6NOR1      Lovastatin (MEVACOR) 10 mg Tab 
    RWC6NOR2  Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 
    RWC6NOR2     amLODIPine (NORVASC) 2.5 mg Tab 
    RWC6NOR2 Carbidopa/Levodopa (SINEMET) 25 mg (100 mg) Tab 
    RWC6NOR2     Bisacodyl EC (DULCOLAX) 5 mg Tab 
    RWC6NOR2      Lovastatin (MEVACOR) 10 mg Tab 
    RWC6SOU1  Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 
    RWC6SOU1     amLODIPine (NORVASC) 2.5 mg Tab 
    RWC6SOU1 Carbidopa/Levodopa (SINEMET) 25 mg (100 mg) Tab 
    RWC6SOU1     Bisacodyl EC (DULCOLAX) 5 mg Tab 
    RWC6SOU1      Lovastatin (MEVACOR) 10 mg Tab 
    RWC6SOU1  Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 
    RWC6SOU1     amLODIPine (NORVASC) 2.5 mg Tab 
    RWC6SOU2 Carbidopa/Levodopa (SINEMET) 25 mg (100 mg) Tab 
    RWC6SOU2     Bisacodyl EC (DULCOLAX) 5 mg Tab 
    RWC6SOU2      Lovastatin (MEVACOR) 10 mg Tab 
    RWC6SOU2  Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 

那麼我想基本上比較指數用藥療程描述列,如果有兩個設備(6NOR1和6NOR2)之間的比賽我想從數據框中刪除他們兩個。

例如氨氯地平爲2.5mg既是6NOR1和6NOR2它將在那裏被移除,它應該是這樣的:

Device        MedDescription 
    RWC6NOR2  Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 

我想我能做到這一些潛在的方法是通過獲得設備列,然後從那裏獲取所有唯一值。之後,我可以使用查詢功能循環查詢特定單元。

然後......我迷路了。

謝謝你的時間和建議。

回答

3

如果它沒有準備好,確保「設備」是一列,而不是DataFrame指數(使用df = df.reset_index()

然後,你的整個操作是在一個相對乾淨groupy操作。

query對您提到的設備進行過濾,groupby通過唯一的「MedDescription」對數據進行分區,而filter僅保留具有這兩個設備之一的那些組。有關更多示例/可能性,請參閱鏈接的文檔。

In [28]: (df.query("Device in ['RWC6NOR1','RWC6NOR2']") 
    ...: .groupby('MedDescription') 
    ...: .filter(lambda x: x['Device'].nunique() == 1)) 

Out[28]: 
    Device        MedDescription 
4 RWC6NOR2 Doxycycline Monohydrate (AVIDOXY) 100 mg Tab 
+0

對於新問題抱歉,但是這個groupby到底會做什麼?我知道它從文檔中創建了一個groupby對象列表,但究竟是什麼意思? – user3866172

+1

我會鼓勵在文檔中花費一些時間,因爲它真的在逐步完成。 「groupby」本身並不做任何事情,它只是描述了「這是我想要劃分數據的方式」。無論你在groupby之後調用什麼,實際上對那些分區(在這種情況下爲「filter」)(不包括某些分區)做一些事情,但它也可以是「彙總」(總結整個分區)或「變換」(修改所有值) – chrisb

相關問題