2017-10-18 1 views
-1

Ich versuche, die Ausgabe einer Abfrage in Pandas aus dem Format einer Serie in das Format einer Zeichenfolge zu konvertieren. Die Funktion ist unter (Gold * Spalten)Konvertieren einer Pandas-Serie-Ausgabe in Zeichenfolge

def try_three(): 
    import numpy as np 
    nz=df[(df["Gold"]>0) & (df["Gold.1"]>0) & (df["Gold.2"]>0)] 
    nz["average"]=((nz["Gold"])-(nz["Gold.1"]))/(nz["Gold.2"]) 
    return nz.where(nz["average"]==np.max(nz["average"])).dropna()["ID"] 

Der Ausgang

Country 
Bulgaria BUL 
Name: ID, dtype: object 

ist, wo Land der Name des Index und BUL ist der Wert des ID-Feldes. Ich habe bereits versucht, .astype (str) anzuhängen, um nur den Namen des Landes oder der ID zu erhalten, aber ohne Erfolg. Wenn ich "len" vorstelle, bekomme ich die Antwort 1, also denke ich, dass es etwas Ähnliches gibt und genauso einfach, die Ausgabe als String zu erhalten.

+1

Für keine Probe zeigt, Daten -1 –

Antwort

1

Wenn Ausgang immer 1 Element Series (da nur ein max) Series.item ist verwenden :

nz.where(nz["average"]==np.max(nz["average"])).dropna()["ID"].item() 

Aber ich f möglich mehrere Max-Werte dann, wenn fehlgeschlagen.


So ist posible Rückgabeliste oder string aus der Liste verbunden:

nz.where(nz["average"]==np.max(nz["average"])).dropna()["ID"].tolist() 

Oder:

', '.join(nz.where(nz["average"]==np.max(nz["average"])).dropna())["ID"].tolist() 

Wenn allgemeine Lösung wollen:

a = nz.where(nz["average"]==np.max(nz["average"])).dropna()["ID"] 

if len(a) == 1: 
    return a.item() 
else: 
    return ', '.join(a) # a.tolist() 
1

IIUC Sie das erste Element in der Serie (ID Spalte) zu erhalten:

df['ID'].iat[0] 

Demo:

In [77]: df = pd.DataFrame({'ID':['BUL']}, index=['Bulgaria']).rename_axis('Country') 

In [78]: df 
Out[78]: 
      ID 
Country 
Bulgaria BUL 

In [79]: df['ID'] 
Out[79]: 
Country 
Bulgaria BUL 
Name: ID, dtype: object 

In [80]: df['ID'].iat[0] 
Out[80]: 'BUL' 
+0

Das war nicht genau das was ich suchte, da ich etwas allgemeineres wollte. Trotzdem war deine Antwort auch hilfreich. Danke auch für das Einrücken meines Codes. –

Verwandte Themen