ich bin Analyse TMDB dataset on Kaggle und das Jahr in der Variable release_date
auf einige Einträge werden durch 40 Jahre verschoben wird, wenn mit der Variablen verglichen release_year
:eine alternative Lösung mit Pandas `Implementierung transform`
# Change to pandas datetime
tmdb_df['release_date'] = pd.to_datetime(tmdb_df['release_date'])
tmdb_df.query('release_date > datetime.date(2015,12,31)')[['release_date', 'release_year']].head()
###
#release_date release_year
#9849 2062-10-04 1962
#9850 2062-12-10 1962
#9851 2062-06-13 1962
#9852 2062-12-25 1962
#9853 2062-10-24 1962
Ich habe kommen mit einer Lösung mit apply
:
# Check for movies where the year on `release_date` are shifted
# when compared with `release_yer`
import datetime
# Change to pandas datetime
tmdb_df['release_date'] = pd.to_datetime(tmdb_df['release_date'])
def aux_func(row):
"""Fix year"""
if row['release_date'].year != row['release_year']:
return row['release_date'].replace(year=row['release_year'])
else:
return row['release_date']
# Apply fix
tmdb_df['release_date'] = tmdb_df[['release_date', 'release_year']].apply(aux_func, axis=1)
Aber ich frage mich, ob es möglich ist, zu verwenden Pandas' transform
dies zu lösen, oder wenn es einen anderen Ansatz.
Danke, @jezrael. Soweit ich weiß, wird das auch die Einträge kopieren, bei denen die Jahre in Ordnung sind. Hab ich recht? – gabra
Ja, genau. Ich denke Maske ist hier nicht nötig. Oder etwas fehlt? – jezrael
Ich denke, es ist Ok. Ich habe auch versucht, die Einträge zu vermeiden, in denen das Jahr gleich ist, aber ich denke, dass es nicht notwendig ist. Wenn Sie es mit "if" überprüfen oder einfach überschreiben, erhalten Sie das gleiche Ergebnis. Vielen Dank. – gabra