在 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() 时,它为我提供了一个超出范围的错误列表索引,用于创建的新列。

解决方法

您可以使用 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 与列具有相同的类型。例如,如果您有一列包含字符串,则不能使用整数作为默认值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...