2017-03-27 13 views
1

Ich versuche, Semeion Handwritten Digit Data Set als Pandas DataFrame zu importieren, aber die erste Zeile wird als Spaltennamen genommen.Python Pandas - Hinzufügen von Spaltennamen mit For-Anweisung

df.head() 
    0.0000 0.0000.1 0.0000.2 0.0000.3 0.0000.4 0.0000.5 1.0000 1.0000.1 \ 
0  0.0  0.0  0.0  0.0  0.0  1.0  1.0  1.0 
1  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 
2  0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.0 
3  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 
4  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0 

    1.0000.2 1.0000.3 ... 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 
0  1.0  1.0 ... 1 0 0 0 0 0 0 0 0 0 
1  0.0  1.0 ... 1 0 0 0 0 0 0 0 0 0 
2  1.0  1.0 ... 1 0 0 0 0 0 0 0 0 0 
3  0.0  1.0 ... 1 0 0 0 0 0 0 0 0 0 
4  1.0  1.0 ... 1 0 0 0 0 0 0 0 0 0 

[5 rows x 266 columns] 

Da der Datenrahmen 266 Spalten hat, ich versuche Zahlen als Spaltennamen zuweisen, Lambda und ein for-Schleife .... mit dem folgenden Code:

df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data", delimiter = r"\s+", 
       names = (lambda x: x for x in range(0,266))) 

Aber mir immer seltsam Spaltennamen, wie:

>>> df.head(2) 
    <function <genexpr>.<lambda> at 0x04F4E588> \ 
0           0.0 
1           0.0 

    <function <genexpr>.<lambda> at 0x04F4E618> \ 
0           0.0 
1           0.0 

    <function <genexpr>.<lambda> at 0x04F4E660> \ 
0           0.0 
1           0.0 

Wenn ich die Klammer zu entfernen, dann wird der Code wirft einen Syntaxfehler:

>>> df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data", delimiter = r"\s+", 
       names = lambda x: x for x in range(0,266)) 
SyntaxError: invalid syntax 

Kann mir jemand sagen:

1) Wie Spaltennamen als Zahlen erhalten ... ab 0 bis 266

2) Wenn im Fall bekomme ich einen Datenrahmen mit dem ersten Zeile als Spaltennamen, wie schiebe ich es runter und füge neue Spaltennamen hinzu, ohne die erste Zeile zu verlieren?

TIA

+0

Danke ... Es hat funktioniert! Aber was ist falsch in meinem Lambda-Code? – chhibbz

+0

Ich denke, Problem ist es brauchen Liste von Spalten Namen, so dass "Bereich" notwendig ist. – jezrael

Antwort

2

Ich glaube, Sie header=None oder names=range(266) für Satz Standardnamen der Spalten in read_csv Parameter müssen:

url = "http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data" 
df = pd.read_csv(url, sep = r"\s+", header=None) 

df = pd.read_csv(url, sep = r"\s+", names=range(266)) 
1

Sie können auch versuchen, so etwas wie:

my_columns = [range(266)] 
+0

oh sorry, ich werde dann nur den zweiten Teil behalten –

Verwandte Themen