返回

python-isin使用多个列值

发布时间:2022-04-15 16:55:13 231
# node.js

我想分配True/False如果数据框中的每一行包含我指定的列的特定值,则为该行指定值。例如,假设我有以下数据帧:

d = {
    "col1": ["alpha", "beta", "alpha", "gamma", "alpha"],
    "col2": [1, 2, 2, 3, 1],
    "col3": ["a", "a", "b", "c", "d"],
}
df = pd.DataFrame(d)
df

    col1  col2 col3
0  alpha     1    a
1   beta     2    a
2  alpha     2    b
3  gamma     3    c
4  alpha     1    d

我知道,如果我想使用单个列的值创建行掩码,我可以使用pandas的isin。例如,如果我希望所有包含alpha在里面col1,我可以做到以下几点:df['col1'].isin(["alpha"]).

0     True
1    False
2    False
3    False
4     True

如何获得类似的行为,但有多个列?如果我想设置所有具有alpha在里面col11在里面col2True还有其他一切False?

我想有一个函数,它接受一个数据帧和一个字典作为输入。字典将有与列名和值对应的键,作为我想要的值列表。该函数返回一系列布尔值,其中每一行True如果dataframe中的对应行包含字典中的值False否则例如:

def multi_column_isin(df, d):
    
    s = pandas Series where each row is True if it has values in d else False
    return s

s = multi_column_isin(df, {"col1": ["gamma", "alpha"], "col2": [1, 3]})
s

0     True
1    False
2    False
3     True
4     True
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像