Учитывая следующие данные:
df = pd.DataFrame(
dict(
x1=["zero", "one", "two"],
x2=["one", "zero", "zero"],
x3=["zero", "two", "one"],
x4=["zero", "two", "two"],
)
)
, который выглядит как:
In [2]: df
Out[2]:
x1 x2 x3 x4
0 zero one zero zero
1 one zero two two
2 two zero one two
Я хотел бы заменить элементы в нем, используя следующие:
reps = pd.DataFrame(
dict(
val_from=["zero", "one", "two"],
val_to=["nothing", "single", "couple"],
)
)
в результате получаются следующие данные:
x1 : x2 : x3 : x4
single : single : single : single
single : single : couple : couple
couple : single : single : couple
Следующее работает, но я чувствую, что есть лучший подход:
replacement = {x:y for x,y in zip(reps['val_from'], reps['val_to'])}
df.transform(lambda x: x.replace(replacement))