0

我有一个字典,其中包含键值对列名称和值作为该列中允许值的列表

如何用'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() 它给我一个错误列表索引超出了新列的范围。

4

1 回答 1

0

您可以使用参数设置为的map方法。default_value"0"

如果对于每一列,您都有一个接受值的列表,您可以创建一个虚拟映射,将每个元素映射到自身并在map.

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

于 2021-04-29T13:22:20.007 回答