gpt4 book ai didi

python - 检查 Pandas 列是否包含另一列的值

转载 作者:行者123 更新时间:2023-11-28 22:51:25 24 4
gpt4 key购买 nike

如果 df['col']='a','b','c'df2['col']='a123','b456','d789 ' 如何创建 df2['is_contained']='a','b','no_match' 如果值来自 df['col']df2['col'] 的值中找到 df['col'] 返回值,如果未找到匹配项,则返回 'no_match'?此外,我不希望有多个匹配项,但在不太可能出现的情况下,我想返回一个像“多个匹配项”这样的字符串。

最佳答案

有了这个玩具数据集,我们想向 df2 添加一个新列,其中前三行包含 no_match,最后一行包含值'd' 因为该行的 col 值(字母 'a')出现在 df1 中。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


df1 = pd.DataFrame({'col': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'col': ['a123','b456','d789', 'a']})

换句话说,仅当行的 df2['col'] 值出现在 df1['col'] 的某处。

In [2]: df1
Out[2]:
col
0 a
1 b
2 c
3 d

In [3]: df2
Out[3]:
col
0 a123
1 b456
2 d789
3 a

如果这是理解您的问题的正确方法,那么您可以使用 pandas isin 执行此操作:

In [4]: df2.col.isin(df1.col)
Out[4]:
0 False
1 False
2 False
3 True
Name: col, dtype: bool

仅当 df2.col 中的值也在 df1.col 中时,此计算结果为 True

如果您完全熟悉 R,那么您可以使用 np.where,它或多或少与 R 中的 ifelse 相同。

In [5]:     np.where(df2.col.isin(df1.col), df1.col, 'NO_MATCH')
Out[5]:
0 NO_MATCH
1 NO_MATCH
2 NO_MATCH
3 d
Name: col, dtype: object

对于 df2.col 值出现在 df1.col 中的行,df1.col 中的值将为给定返回行索引。在 df2.col 值不是 df1.col 成员的情况下,将使用默认的 'NO_MATCH' 值。

关于python - 检查 Pandas 列是否包含另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com