2016-03-22 19 views
-1

I Positionen aller max len Werte in einer Spalte von Pandas Datenrahmen zu finden versuchen:nicht konvertieren kann numpy Tupel zur Liste

x2=np.where(tpo2.a.map(len) == tpo2.a.map(len).max()) 

Diese Arbeit und gibt mir Tupel:

x2 
Out[178]: 
(array([34, 35], dtype=int64),) 

würde ich mag Positionen des Maximums finden, die sich zu der Position "mittlerer Punkt" schließen. Dies funktioniert:

min(x2, key=lambda x:abs(x-midpoint)) 

aber ich brauche x2 Liste nicht Tupel sein. Ich versuchte .tolist(), Liste (x2), Karte (Liste, x2), aber kann nicht Liste von x2 erhalten.

Was mache ich falsch?

+0

warum 'x2 = list (x2)' nicht funktioniert? 'list (x2)' gibt eine 'list' zurück, vielleicht hast du vergessen, das zu' x2' zu bestätigen. – Arman

+0

'x2' ist ein Array INSIDE in einem Tupel. Sie müssen '[0]' Indizierung verwenden, um das Array zu erhalten. – hpaulj

Antwort

1

Ich glaube, Sie nur den ersten Teil des x2 müssen, weil np.where ein Tupel zurück:

min(list(x2[0]), key=lambda x:abs(x-midpoint))