2016-07-27 25 views
-1

Ich versuche, eine for-Schleife zu schreiben, um durch meinen Index zu iterieren und nur diejenigen zu behalten, die Duplikate haben.Iterating über Index in Python

Mein aktueller Datenrahmen wird zwei miteinander verschmolzen

    0.0102700  0.0308099  0.0616199  0.123240 \ 
5000000000010 4.330760e-05 4.442720e-05 9.232970e-05 1.994190e-04 
5000000000238 6.006910e-04 6.041130e-04 1.220220e-03 2.500240e-03 
... 

.

   0.00902317  0.0270695  0.0451159  0.0631622 \ 
5000000000010 6.962980e-05 7.063750e-05 7.165970e-05 7.269680e-05 
5000000000234 4.638970e-04 4.716010e-04 4.794320e-04 4.873930e-04 

.

New = pd.concat([SFR_low, SFR_high]) 
New = New.sort_index() 
print(New) 

       0.00902317  0.0102700  0.0270695  0.0308099 \ 
5000000000010 6.962980e-05   NaN 7.063750e-05   NaN 
5000000000010   NaN 4.330760e-05   NaN 4.442720e-05 
5000000000081 6.299210e-05   NaN 6.299320e-05   NaN 
5000000000082   NaN 8.176550e-04   NaN 8.172630e-04 

Ich brauche einen neuen Datenrahmen, der nur die Zeilen mit doppelten Indizes hält.

+0

bitte die Frage bearbeiten und Ihren Code und Ihre Datenrahmen hinzufügen (oder ein Teil davon) – danielhadar

+0

Nur so jetzt tat, aber ich habe noch keinen Code, da diese Dateien gerade eingelesen wurden. – cmf05

+0

Sie möchten die Werte, die Zeile oder die Spalte behalten? Und wo du dupliziert? In derselben Zeile, Spalte oder ganzen Tabelle? Und bitte versuchen Sie etwas, und wenn Sie scheitern, dann überarbeiten Sie die Frage. Dies könnte Ihnen helfen, den Code zu entfernen, der zum Entfernen von Duplikaten benötigt wird. Http://chrisalbon.com/python/pandas_dataframe_count_values.html Es gibt einen Code, um die Häufigkeit auf Datenrahmen zu überprüfen. Viel Glück. – ElMesa

Antwort

0

Verwenden Index.duplicated mit Parameter keep=False:

print (df.index[df.index.duplicated(keep=False)]) 
Int64Index([1000, 1000, 1002, 1002], dtype='int64') 


for i in df.index[df.index.duplicated(keep=False)]: 
    print (i) 
1000 
1000 
1002 
1002 

Wenn Notwendigkeit Filterreihen mit duplizierten Index verwenden boolean indexing:

print (New.index.duplicated(keep=False)) 
[ True True False False] 

print (New[New.index.duplicated(keep=False)]) 
       0.00902317 0.0102700 0.0270695 0.0308099 0.0451159 \ 
5000000000010   NaN 0.000043  NaN 0.000044  NaN 
5000000000010  0.00007  NaN 0.000071  NaN 0.000072 

       0.0616199 0.0631622 0.123240 
5000000000010 0.000092  NaN 0.000199 
5000000000010  NaN 0.000073  NaN 
0
li = [1000,1000,1001,1002,1002] 
for i in li: 
    temp = i 
    count = 0 
    for j in li: 
     if j is temp: 
      count +=1 
    if count > 1: 
     print i 

Dies löst Ihre Anforderung?

+0

Das OP verwendet "Pandas" nicht eine Liste, diese Antwort ist nicht relevant für die Frage des OP – EdChum

0

einige Code zuerst versuchen, bevor er fragte: es viele doppelte Fragen sind

a = [1000,1000,1001,1002,1002] 
c = [x for x in a if a.count(x) > 1] 
print c