J'ai un Pandas DataFrame qui contient les années de naissance:
df['DOB'] = str(df['Birth Year'] + '-' + '04-13').dt.strftime('%y-%m-%d)
Je veux ajouter une colonne appelée "DOB" qui ajoute le même MM-DD à l'année de naissance pour que le DataFrame ressemble comme:
Name Birth Year DOB Joe 2000 2000-04-13 Bill 1998 1998-04-13 Mike 1996 1996-04-13 Frank 1995 1995-04-13
À tort, voici ma tentative de faire ceci:
Name Birth Year Joe 2000 Bill 1998 Mike 1996 Frank 1995
Toute suggestion sur la façon de le faire efficacement ?
3 Réponses :
Utilisez to_datetime , si vous veulent que la colonne soit de type DateTime:
Name Birth_Year DOB 0 Joe 2000 2000-04-13 1 Bill 1998 1998-04-13 2 Mike 1996 1996-04-13 3 Frank 1995 1995-04-13
df['DOB'] = pd.to_datetime(df['Birth_Year'].astype(str) + '-04-13', format='%Y-%m-%d')
print(df)
p >
Merci pour l'aide!
@KevinClark Bien, je pourrais vous aider!
cela devrait faire l'affaire
df['DOB'] = df['Birth Year'].astype(str) + "-04-13"
le problème que vous avez eu est que la colonne "Année de naissance" est probablement un nombre et non une chaîne
Cela marche; cependant, je dois avoir le formaté avec to_datetime
pandas.to_datetime Peut prendre un dataframe avec des colonnes correctement nommées. Les colonnes minimales nécessaires sont ['Year', 'Month', 'Day']
dates Year Month Day 0 2000 4 13 1 1998 4 13 2 1996 4 13 3 1995 4 13
Pour voir quelles dates code > ressemble à
dates = pd.DataFrame({'Year': df['Birth Year'], 'Month': 4, 'Day': 13})
df.assign(DOB=pd.to_datetime(dates))
Name Birth Year DOB
0 Joe 2000 2000-04-13
1 Bill 1998 1998-04-13
2 Mike 1996 1996-04-13
3 Frank 1995 1995-04-13
Voulez-vous datetime comme des résultats ou des chaînes?
résultats datimetime.