微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。