Ich habe einen Pandas Datenrahmen mit einer Spalte von ganzen Zahlen, die einige Nans enthält. Ich möchte sie von Integer in String umwandeln und die Nans durch eine Beschreibung wie 'nicht verfügbar' ersetzen.Wie man eine Dataframe Spalte in einen String konvertiert und Nans ersetzt (Fillna funktioniert nicht)
Der Hauptgrund ist, weil ich Groupbys für diese Spalte ausführen muss, und wenn ich die Nans nicht konvertiere, wird die Groupby sie loswerden! Warum das überhaupt passiert und wie die ganze Pandas-Gemeinschaft nicht in Waffen aufgestiegen ist, ist eine völlig getrennte Diskussion (als ich das zum ersten Mal erfahren habe, konnte ich es nicht glauben ...).
Ich habe den folgenden Code ausprobiert, aber es funktioniert nicht. Beachten Sie, dass ich sowohl astype(str)
als auch astype('str'
ausprobiert habe). In beiden Fällen wird die Spalte in Objekt konvertiert, nicht in Zeichenfolge. vielleicht, weil Python annimmt, dass die Länge der Strings variiert (falsch, sie haben alle die gleiche Länge in meinem Datenrahmen)? Aber vor allem funktioniert das fillna() nicht, und die Nans bleiben Nans! Warum? Irgendwelche Vorschläge? Vielen Dank!
import numpy as np
import pandas as pd
df= pd.DataFrame(np.random.randint(1,10,(10000,5)), columns=['a','b','c','d','e'])
df.iloc[0,0]=np.nan
df['a']=df['a'].astype(str)
df['a']=df['a'].fillna('not available')
print(df.dtypes)
print(df.head())
Strings in dtype Objekt gespeichert sind, man kann das ändern. . – Dark
Oh mein ### @@@ !!! ## ... Ich habe gerade bemerkt, dass, wenn ich astype (Objekt) mache, fillna funktioniert. Aber warum auf der Erde? astype (str) konvertiert es bereits in ein Objekt. Ich verstehe nicht! –
Fügen Sie die Pandas Version hinzu, die Sie verwenden. Das funktioniert gut für mich. – Dark