2016-04-10 14 views
2

'p1' sütununda yinelenen öğeleri kaldırmaya çalışıyorum ve 'p2' i.e 'p1' sütununda zaten bulunan elemanlar 'p2' veya sonraki sütunlarda yeniden görünmemelidir. Örneğin, aşağıdaki kod için, sadece 'a b' ve 'c d' kalacaktır.dataframes python öğesinde yinelenen öğeleri kaldırın

Bunu yapmanın etkili yolu nedir?

import pandas as pd 
df = pd.DataFrame({'p1':['a','b','a','a','b','d','c'], 
       'p2':['b','a','c','d','c','a','d'], 
       'value':[1,1,2,3,5,3,5]}) 
df 

cevap

1

yapabilirsiniz ilk set_index sütununda value, stack dan Series, drop_duplicates, unstack ve son reset_index oluşturmak için:

print df.set_index('value').stack().drop_duplicates().unstack().reset_index() 
    value p1 p2 
0  1  a b 
1  2 None c 
2  3 None d 
+0

Merhaba Jezrael, belki de sorumu yeniden ifade edeyim, p1 ve p2 bir çift olmalı. Bununla birlikte, p1 veya p2'mde zaten olan her şeyde, öğenin sonraki p1 veya p2 – ShinjiOno

+0

IIUC'mden herhangi birinde yeniden görünmesini istemiyorum. Print df.drop_duplicates (subset = ['p1', 'p2'])? – jezrael

+0

Belki anlamalısınız - "Hiçbiri" değerleriyle "df" çıkışındaki tüm satırları kaldırmanız gerekiyor mu? – jezrael

0

Serisi (pd.DataFrame ({ 'p1': [ 'a ' 'b', 'a', 'a', 'b', 'd', 'c'] 'p2': [ 'b', 'a', 'c', 'd', c' ',' a ',' d '],' değer ': [1,1,2,3,5,3,5]}). değerler.ravel()) benzersiz()

Sanalenimdeki pandaları yüklediğimde çıktıyı yayınlayacağım.

+0

Ancak OP, kopyaları yalnızca 'p1' ve 'p2''den kaldırmak istiyor. Bir sonraki sorun, kurucu tarafından 'df' oluşturulduysa, indeks kaybolur. – jezrael