В библиотеке Python Vaex как я могу заменить значения столбцов разрешенными пользовательскими значениями этих столбцов

#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 используемый имеет тот же тип, что и столбец. Например, если у вас есть столбец со строками, вы не можете использовать целое число в качестве значения по умолчанию.