1
votes

Ajouter MM-DD à Year Python

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 ?


2 commentaires

Voulez-vous datetime comme des résultats ou des chaînes?


résultats datimetime.


3 Réponses :


3
votes

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 >


2 commentaires

Merci pour l'aide!


@KevinClark Bien, je pourrais vous aider!



1
votes

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


1 commentaires

Cela marche; cependant, je dois avoir le formaté avec to_datetime



1
votes

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


0 commentaires