2017-01-23 1 views
1

Ich habe eine Pandas Dataframe df die wie folgt aussieht:Wie wird ein DataFrame nur durch eine Spalte mit mehreren Einträgen untergliedert?

0  1 
C1 V1 
C2 V1 
C3 V1 
C4 V2 
C5 V3 
C6 V3 
C7 V4 

Ich wünsche df nur die Zeilen der Teilmenge, die mehrere Werte in Spalte 1 hat, die gewünschten Ausgang Wesen:

0  1 
C1 V1 
C2 V1 
C3 V1 
C5 V3 
C6 V3 

Wie tue ich das?

+1

bezogen werden: http://stackoverflow.com/questions/11528078/determining -duplicate-Werte-in-einem-Array – EdChum

Antwort

1

Ich glaube, Sie brauchen boolean indexing mit Maske von DataFrame.duplicated mit keep=False für Zeichen alle Duplikate als True erstellt:

print (df.columns) 
Index(['0', '1'], dtype='object') 

mask = df.duplicated('1', keep=False) 
#another solution with Series.duplicated 
#mask = df['1'].duplicated(keep=False) 

print (mask) 
0  True 
1  True 
2  True 
3 False 
4  True 
5  True 
6 False 
dtype: bool 

print (df[mask]) 
    0 1 
0 C1 V1 
1 C2 V1 
2 C3 V1 
4 C5 V3 
5 C6 V3 

print (df.columns) 
Int64Index([0, 1], dtype='int64') 

mask = df.duplicated(1, keep=False) 
#another solution with Series.duplicated 
#mask = df[1].duplicated(keep=False) 

print (mask) 
0  True 
1  True 
2  True 
3 False 
4  True 
5  True 
6 False 
dtype: bool 

print (df[mask]) 
    0 1 
0 C1 V1 
1 C2 V1 
2 C3 V1 
4 C5 V3 
5 C6 V3 
Verwandte Themen