2016-03-20 16 views
1

In einem bestimmten Datensatz, ich habe eine Spalte, ‚starCustomer‘, die auf diesen Werten nimmt:Konvertieren in Datenrahmen in Python

[0, X, 0, 0, X, 0, X,...] 

Das heißt, jede Beobachtung eine 0 enthalten, wenn die Person ist kein Star-Kunde, aber ein X, wenn diese Person ist. Ich dachte, es wäre eine bessere Idee sein, jedes X als 1 statt zu vertreten, so habe ich den folgenden Code geschrieben:

Star = df['starCustomer'] 
New_Star = [1 if x == 'X', else 0 for x in Star] 

es aber meines Wissens ist, dass New_Star ist kein Datenrahmen, wie wir es wollen sein. Also, ich versuche, diesen folgenden Code auszuführen:

Star = pd.DataFrame(New_Star) 

Allerdings habe ich die folgende Fehlermeldung erhalten:

TypeError: 'list' object is not callable 

Kann jemand informieren Sie mich auf das, was über diese falsch ist?

+0

In Ihrem Beispiel 'Star' ist kein entweder Datenrahmen. Es ist eine Serie. – BrenBarn

Antwort

0

Wenn ich Sie recht verstehe, können Sie dies nur tun:

New_Star = Star.map({0: 0, "X": 1}) 
+0

Ich habe das versucht, aber es hat sich nicht um das Datenrahmenproblem gekümmert! Wenn ich New_Star eintippe, nur um die Daten selbst zu sehen, erhalte ich einen Fehler über isinstance(). –

+0

Tatsächlich, mit etwas Neuordnung der Syntax, funktioniert dieser Ansatz wie ein Charme. Vielen Dank! –

1

Eine Spalte in einem Datenrahmen ist ein Objekt der Klasse pd.Series

Sie können zunächst eine neue Spalte in der hinzufügen Datenrahmen:

:

df['New_Star'] = df.apply(lambda x: 1 if x == 'X' else 0 , axis=1) 

Sie jetzt einen Datenrahmen, bestehend nur auf der Säule New_Star mit bekommen können

new_star_df = df[['New_Star']] 

Beachten Sie die doppelte eckige Klammern, mit einer einzigen Konsole Sie die pd.Series zurückkehren wird, nicht die pd.DataFrame

Verwandte Themen