Вы можете определить функцию и применить ее поэлементно с помощью Series.apply
:
df = pandas.DataFrame.from_records([('Cryptonomicon', 1999), ('Snow Crash', 1992), ('Quicksilver', 2003)], columns=['Title', 'Year'])
# df is:
# Title Year
# 0 Cryptonomicon 1999
# 1 Snow Crash 1992
# 2 Quicksilver 2003
# Imagine this dataframe came from an Excel spreadsheet...
df_replacements = pandas.DataFrame.from_records([(1999, 1900), (2003, 3003)], columns=['A', 'B'])
replacements = pandas.Series(df_replacements['B'].values, index=df_replacements['A'])
def replaced(value):
return replacements.get(value, value)
df['Year'] = df['Year'].apply(replaced)
# df is:
# Title Year
# 0 Cryptonomicon 1900
# 1 Snow Crash 1992
# 2 Quicksilver 3003
Если у вас очень большой фрейм данных, вы можете векторизовать его, используя pandas.Series.map()
:
year = df['Year']
df['Year'] = year.where(~year.isin(replacements.keys()),
year,
year.map(replacements))