Ich habe diese Art von Datenrahmen.
import pandas as pd
df = pd.DataFrame({'year': [1894, 1976, 1995, 2001, 1993]})
Die jetzige dataframe
year
0 1894
1 1976
2 1995
3 2001
4 1993
Wie kann ich effektiv eine Hot-Codierungsspalte hinzufügen, damit der Datenrahmen so aussieht?
Das erwartete dataframe
year 1800s 1900s 2000s
0 1894 1 0 0
1 1976 0 1 0
2 1995 0 1 0
3 2001 0 0 1
4 1993 0 1 0
Ich habe den folgenden Code bereits ausprobiert und es hat funktioniert. Aber ich denke, es gibt eine bessere Lösung. Können Sie mir empfehlen, welche Funktion ich verwenden kann? Vielen Dank!
Der Code
df['year'] = df['year'].astype(str)
df['1800s'] = df['year'].apply(lambda x: 1 if x[:2] == '18' else 0)
df['1900s'] = df['year'].apply(lambda x: 1 if x[:2] == '19' else 0)
df['2000s'] = df['year'].apply(lambda x: 1 if x[:2] == '20' else 0)
Verwenden Sie die Ganzzahldivision für die ersten 2 Ziffern mit get_dummies
, benennen Sie die Spaltennamen um DataFrame.add_suffix
und benennen Sie sie zuletzt DataFrame.join
zum Hinzufügen zum Original:
df = df.join(pd.get_dummies(df['year'] // 100).add_suffix('00s'))
print (df)
year 1800s 1900s 2000s
0 1894 1 0 0
1 1976 0 1 0
2 1995 0 1 0
3 2001 0 0 1
4 1993 0 1 0
print (df['year'] // 100)
0 18
1 19
2 19
3 20
4 19
Name: year, dtype: int64
print (pd.get_dummies(df['year'] // 100).add_suffix('00s'))
1800s 1900s 2000s
0 1 0 0
1 0 1 0
2 0 1 0
3 0 0 1
4 0 1 0
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen