2017-02-16 12 views
0

ich Daten, die in einem Datenrahmen genannt Elemente wie folgt aussieht:Typeerror: int() Argument muss ein String sein ... nicht ‚untypische Konstruktionen‘

 Yr  Mo Count 
1 2008 2 14 
2 2008 3 37 
3 2008 4 23 
4 2008 5 22 
5 2008 6 32 
6 2008 7 45 
7 2008 8 33 
8 2008 9 24 
9 2008 10 70 
10 2008 11 48 
11 2008 12 60 
12 2009 1 63 
13 2009 2 64 
14 2009 3 60 
15 2009 4 63 
16 2009 5 41 
17 2009 6 44 
18 2009 7 42 
19 2009 8 47 
20 2009 9 57 
21 2009 10 62 
22 2009 11 47 
23 2009 12 50 

Ich versuche, eine Funktion groupby anzuwenden. transformieren und die Funktion in der Spalte 'Yr' anwenden lassen. Die Funktion, die ich anwenden versuche unter:

def normal (list): 
    for item in list: 
     mn = min(list) 
     mx = max(list) 
     (item-mn)/(mx-mn) 

Die Codezeile ich für die groupby.transform zu verwenden Ich versuche, ist dies:

import pandas as pd 
appts2['normal'] = appts2.groupby('Yr')['Count'].transform(normal) 

Das Folgende ist die Zurückverfolgungs, die ich bekommen :

Traceback (most recent call last): 

    File "<ipython-input-49-6f01ec40e613>", line 1, in <module> 
    appts2['Normal'] = appts2.groupby('Yr')['Count'].transform(normal) 

    File "file location", line 2845, in transform 
    result[indexer] = res 

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' 
+2

Vielleicht haben Sie irgendwo eine 'Return'-Anweisung vergessen? Das ist eine häufige Quelle von unerwarteten 'None's. –

+0

Wenn ich eine Rückgabe in die for-Anweisung einfüge, wird die Funktion in der groupby.transform ausgeführt, aber es gibt nur das Ergebnis für die erste Zeile zurück, anstatt es auf jede Zeile anzuwenden – SpottieO

+0

Sie müssen es ablegen es muss die gleiche Spalte wie starten die 'für' Aussage nicht der Körper. –

Antwort

0

Paul Panzer danke für die Hilfe,

ich die f geändert Dies funktioniert jetzt einwandfrei:

def normal (list): 
    mn = min(list) 
    mx = max(list) 
    result=[] 
    for item in list: 
     result.append((item-mn)/(mx-mn)) 
    result = pd.Series(result) 
    return result 
Verwandte Themen