#python #vaex
Вопрос:
У меня есть словарь с именем и значением столбцов пары ключ-значение в качестве списка разрешенных значений в этих столбцах
Как заменить значения, которые не встречаются в списке словаря, на «0»
FinalCat_ — это список имен столбцов CombinedCat-это Vaex df AllowedCatColValuesFast — это словарь
def returnVal(x, li):
if x in li:
return x
else:
return '0'
for i in FinalCat_:
CombinedCat[i "Mod"] = CombinedCat.apply(returnVal, [CombinedCat[i], AllowedCatColValuesFast[i]])
поэтому, когда я делаю .value_counts (), он выдает мне индекс списка ошибок вне диапазона для создаваемых новых столбцов.
Ответ №1:
Вы можете использовать map
метод с default_value
параметром, установленным в "0"
.
Если для каждого столбца у вас есть список принятых значений, вы можете создать фиктивное сопоставление, которое сопоставляет каждый элемент самому себе и использует его в map
.
Вот краткий пример с vaex
3.0.0:
import pandas as pd
import vaex
df = pd.DataFrame({"column": ["x", "y", "z"]})
df = vaex.from_pandas(df)
accepted_values = ["x", "y"]
default_value = "0"
df["column"].map(dict(zip(accepted_values, accepted_values)), default_value=default_value)
что дает ожидаемый результат:
Expression = _choose_masked(_ordinal_values(column, map_key_set), map_...
Length: 3 dtype: str (expression)
---------------------------------
0 x
1 y
2 0
Вы должны убедиться, что default_value
используемый имеет тот же тип, что и столбец. Например, если у вас есть столбец со строками, вы не можете использовать целое число в качестве значения по умолчанию.