2016-10-09 4 views
0

Ich habe einen Python-Datenrahmen namens Wiki, mit der Wikipedia-Informationen für einige Leute. Jede Zeile ist eine andere Person, und die Spalten lauten: 'name', 'text' und 'word_count'. Die Informationen in 'text' wurden in Wörterbuchform (Schlüssel, Werte) geschrieben, um die Informationen in der Spalte 'word_count' zu erzeugen.Python, Wörterbuch in einem Datenrahmen, Sortieren

Wenn ich die Zeile in Bezug auf Barack Obama extrahieren wollen, dann:

row = wiki[wiki['name'] == 'Barack Obama'] 

Jetzt würde ich das beliebteste Wort gefallen. Wenn ich tun:

adf=row[['word_count']] 

ich einen anderen Datenrahmen erhalten, weil ich sehe, dass:

type(adf)=<class 'pandas.core.frame.DataFrame'> 

und wenn ich

adf.values 

bekomme ich:

array([[ {u'operations': 1, u'represent': 1, u'office': 2, ..., u'began': 1}], dtype=object) 

jedoch Was für mich sehr verwirrend ist, ist dass die Größe 1 ist

adf.size=1 

Daher kann ich nicht wirklich die Schlüssel und Werte extrahieren. Dinge wie adf.values[1] funktionieren nicht

Schließlich muss ich die Informationen in word_count sortieren, so dass die häufigsten Wörter zuerst angezeigt werden. Aber ich würde gerne verstehen, wie man auf die Informationen innerhalb eines Wörterbuchs innerhalb eines Datenrahmens zugreifen kann ... Ich bin bei den Typen hier verloren. Ich bin nicht neu in der Programmierung, aber ich bin relativ neu in Python.

Jede Hilfe wäre sehr, sehr viel

Antwort

1

geschätzt Wenn der Name Spalte eindeutig ist, dann können Sie die Spalte mit dem Index des DataFrame Objekts ändern: wiki.set_index("name", inplace=True). Dann können Sie den Wert erhalten: wiki.at['Barack Obama', 'word_count'].

mit Ihrem Code:

row = wiki[wiki['name'] == 'Barack Obama'] 
adf = row[['word_count']] 

Die erste Zeile einen Bool-Array verwenden, um die Daten zu erhalten, hier ist das Dokument: http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing

wiki ist ein DataFrame Objekt und row ist auch ein DataFrame Objekt mit nur einer Zeile, wenn die Spalte Name eindeutig ist.

Die zweite Zeile eine Liste der Spalten aus der row bekommen, hier ist das Dokument: http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics

Sie erhalten eine DataFrame mit nur einer Zeile und einer Spalte.

Und hier ist das Dokument von .at[]: http://pandas.pydata.org/pandas-docs/stable/indexing.html#fast-scalar-value-getting-and-setting

+0

Vielen Dank, das perfekt funktioniert! Ich verstehe die Logik nicht. Warum ist es möglich, die Informationen mit wiki.at ['Barack Obama', 'word_count'] zu extrahieren, aber es war nicht möglich mit row [['word_count']] wie ich zuvor versucht hatte? Wenn du etwas Nützliches weißt, könnte ich lesen, um das zu verstehen, kannst du mich bitte darauf hinweisen? Oder vielleicht, wenn Sie das detailliert erklären könnten, wäre das auch wirklich gut. Vielen Dank – user3177938

+1

@ user3177938 Ich habe einige Dokument-Links hinzugefügt, bitte überprüfen Sie es. – HYRY

Verwandte Themen