2016-06-30 8 views
-4

ich ein Pandas DatenrahmenWählen Sie die Zeilen 2 Spalten gegeben, wenn ein Wert in einer anderen Spalte wiederholt wird

NAME VALUE A cat A bird B dog A cat C dog B fish

Ich habe möchte eine Spalte hinzufügen, wenn Wörter in der Spalte „Name“ einen Wert in "enthalten Value“, die mehr als einmal auftritt, entsprechend den Namen, so dass:

NAME VALUE HAPPENS_MORE_THAN_ONCE A cat Y A bird Y B dog N A cat Y C dog N B fish N

zur Zeit habe ich folgendes Konstrukt ... wo ich versuche, eine Liste zu bilden, und mit einem SET zu vergleichen, Werte für jeden NAME-Eintrag . Das ist anders als mein letzter Beitrag aus diesem Grund.

df['HAPPENS_MORE_THAN_ONCE'] = df['NAME'].map(df.groupby('NAME')['VALUE'].apply(len(lambda x: (list_x.append(x))>len(set(list_x))))

+2

Ich bin nicht der downvoter aber das ist sehr ähnlich wie Ihre frühere Frage. Nur ein paar Änderungen werden Ihnen das richtige Ergebnis bringen. Auch wenn Sie nicht erfolgreich sein können, zeigen Sie bitte, was Sie versucht haben. – ayhan

+0

Sicher - df ['HAPPENS_MORE_THAN_ONCE'] = df ['NAME']. Map (df.groupby ('NAME') ['WERT']. Apply (len (lambda x: (list_x.append (x))> len (Set (list_x)))). Ich dachte, dass es besser wäre, nur die Liste der Elemente für einen Patienten mit dem Set zu vergleichen .... aber ich bin mir nicht sicher, wie das geht. – amc

+0

würde ich gerne wissen, ob ich in der Ferne richtig bin – amc

Antwort

0

Sie müssen eine Liste erstellen und dann eine Reihe von dieser Liste, wie folgt aus: df['HAPPENS_MORE_THAN_ONCE'] = patient_result['NAME'].map(df.groupby('NAME')['VALUE'].apply(lambda x: len([a for a in x]) > len(set([a for a in x]))))

Verwandte Themen