Mam następującą ramkę DataFrame z zapytania SQL:
(Pdb) pp total_rows
ColumnID RespondentCount
0 -1 2
1 3030096843 1
2 3030096845 1
i chcę to obrócić w ten sposób:
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}
ale chcę się upewnić, że kolumny 303 są rzutowane jako ciągi zamiast liczb całkowitych, aby uzyskać to:
{'3030096843': 1, '3030096845': 1, -1: 2}
to_json()
prawdopodobnie nie wywołuje,astype(str)
gdy opuszcza datetime64 i jego podklasy jako milisekundy od epoki.Jeśli chcesz przekonwertować WSZYSTKIE kolumny na ciągi, możesz po prostu użyć:
Jest to przydatne, jeśli potrzebujesz wszystkiego oprócz kilku kolumn jako łańcuchów / obiektów, a następnie wróć i przekonwertuj pozostałe na cokolwiek potrzebujesz (w tym przypadku liczbę całkowitą):
źródło
Oto druga, szczególnie przydatna do konwersji wielu kolumn na ciąg znaków zamiast pojedynczej kolumny:
źródło
Użyj .astype (str)
Dawny:
Niech d będzie ramką danych Pandas
d['Column_name'].astype(str)
źródło
Używanie
.apply()
zlambda
funkcją konwersji działa również w tym przypadku:total_rows['ColumnID'] = total_rows['ColumnID'].apply(lambda x: str(x))
Dla całych ramek danych możesz użyć
.applymap()
. (ale w każdym razie prawdopodobnie.astype()
jest szybszy)źródło