Ich habe den folgenden DataFrame aus einer SQL-Abfrage:
(Pdb) pp total_rows
ColumnID RespondentCount
0 -1 2
1 3030096843 1
2 3030096845 1
und ich möchte es so drehen:
total_data = total_rows.pivot_table(cols=['ColumnID'])
(Pdb) pp total_data
ColumnID -1 3030096843 3030096845
RespondentCount 2 1 1
[1 rows x 3 columns]
total_rows.pivot_table(cols=['ColumnID']).to_dict('records')[0]
{3030096843: 1, 3030096845: 1, -1: 2}
Ich möchte jedoch sicherstellen, dass die 303 Spalten als Zeichenfolgen anstelle von Ganzzahlen umgewandelt werden, damit ich Folgendes erhalte:
{'3030096843': 1, '3030096845': 1, -1: 2}
to_json()
wird wahrscheinlich nicht aufgerufen,astype(str)
da datetime64 und seine Unterklassen seit der Epoche als Millisekunden verlassen werden.Wenn Sie ALLE Spalten in Zeichenfolgen konvertieren müssen, können Sie einfach Folgendes verwenden:
Dies ist nützlich, wenn Sie alles außer ein paar Spalten als Zeichenfolgen / Objekte benötigen. Gehen Sie dann zurück und konvertieren Sie die anderen in das, was Sie benötigen (in diesem Fall Ganzzahl):
quelle
Hier ist die andere, die besonders nützlich ist, um mehrere Spalten in Zeichenfolgen anstatt nur in einzelne Spalten zu konvertieren :
quelle
Verwenden Sie .astype (str)
Ex:
Sei d der Pandas DataFrame
d['Column_name'].astype(str)
quelle
Die Verwendung
.apply()
mit einerlambda
Konvertierungsfunktion funktioniert auch in diesem Fall:total_rows['ColumnID'] = total_rows['ColumnID'].apply(lambda x: str(x))
Für ganze Datenrahmen können Sie verwenden
.applymap()
. (aber auf jeden Fall ist wahrscheinlich.astype()
schneller)quelle