Я пытаюсь использовать numpy.select
для замены строковых значений в столбце;если строка содержит ключевое слово, мне нужно заменить всю строку другим ключевым словом (есть + - 25 комбинаций).
df["new_col"] = np.select(
condlist=[
df["col"].str.contains("cat1", na=False, case=False),
df["col"].str.contains("cat2", na=False, case=False),
df["col"].str.contains("cat3", na=False, case=False),
df["col"].str.contains("cat4", na=False, case=False),
# ...
df["col"].str.contains("cat25", na=False, case=False),
],
choicelist=[
"NEW_cat1",
"NEW_cat2",
"NEW_cat3",
"NEW_cat4",
# ...
"NEW_cat25"
],
default="DEFAULT_cat",
)
Есть ли более лаконичный способ или я просто должен повторить str.contains(...)
в течение condlist
25 раз ?;numpy.select
это правильный способ сделать это вообще?
Я предполагаю, что здесь можно использовать dict
, но не знаю, как именно.
df["col"].map(d)
где d
- это диктат со старыми и новыми значениями, такими как {"cat1":"NEW_cat1"}
, не будет работать (?), Поскольку я не могу жестко закодировать точные значения, которые необходимо заменить (и поэтому яИспользую str.contains
).