J'ai une question sur un problème de pandas:
J'ai donc un dataframe qui ressemble à ce qui suit:
timestamp user exercises 2018-01-01 John 7 2018-01-01 Mary 9 2018-02-01 John 3 2018-02-01 Mary 2 2018-03-01 John 1 2018-03-01 Mary 5
Et j'ai besoin d'obtenir un dataframe de sortie qui est un sous-ensemble de celui donné, mais il ne doit conserver que les données de l'année 2018, comme ceci:
timestamp user exercises 2018-01-01 John 7 2018-01-01 Mary 9 2018-02-01 John 3 2018-02-01 Mary 2 2018-03-01 John 1 2018-03-01 Mary 5 2019-01-01 John 3 2019-01-01 Mary 4 2019-02-01 John 2 2019-02-01 Mary 5 2020-01-01 John 6 2020-01-01 Mary 2 2020-02-01 John 1 2020-02-01 Mary 2
Toute idée sur la façon d'obtenir cette image de sortie à partir du donné dataframe?
Merci beaucoup d'avance.
Toute aide sera appréciée.
5 Réponses :
import pandas as pd /* Convert the date column to Datetime format */ data['DATE'] = pd.to_datetime(data['DATE']) /* Create mask for the required condition */ mask = data['DATE'] <= '31-12-2018' /* apply mask to the data */ data = data.loc[mask] Try something like this and let me know if this helps.
Utilisez la série .dt.year
pour sélectionner uniquement l'année 2018:
print(df_new) timestamp user exercises 0 2018-01-01 John 7 1 2018-01-01 Mary 9 2 2018-02-01 John 3 3 2018-02-01 Mary 2 4 2018-03-01 John 1 5 2018-03-01 Mary 5
# df['timestamp'] = pd.to_datetime(df['timestamp']) df_new = df[df['timestamp'].dt.year == 2018]
Essayez :
timestamp user exercises 0 2018-01-01 john 7 1 2018-01-01 mary 9
timestamp user exercises 0 2018-01-01 john 7 1 2018-01-01 mary 9 2 2019-01-01 john 3 3 2020-01-01 mary 2
sortie p >
import pandas as pd import datetime as dt df = pd.DataFrame({"timestamp": ['2018-01-01', '2018-01-01', '2019-01-01', '2020-01-01'], "user": ['john', 'mary', 'john', 'mary'], 'exercises': [7,9,3,2]},) df['timestamp'] = pd.to_datetime(df['timestamp']) df[df['timestamp'].dt.year == 2018]
Si vous aimez les lambdas, vous pouvez utiliser ci-dessous:
si l'horodatage est une chaîne:
df.loc[lambda df: (pd.to_datetime(df.timestamp)).dt.year == 2018]
si l'horodatage est la date:
df.loc[lambda df: df.timestamp.str[:4] == '2018']
Votre index est-il un DatetimeIndex
? Si tel est le cas, vous pouvez appeler data.loc ["2018"]
. En interne, pandas
traitera «2018» comme l'année 2018 et, comme le découpage .loc
est inclusif sur les deux bords, sélectionnera toutes les données de cette année.
L'horodatage est-il une chaîne ou un type de date?