小能豆

如何使用 Python DataFrame 检查 A 列的内容是否包含在 B 列中?

py

我在 pandas DataFrame 中有两列:authorsname。我想创建第三列:True如果相应行的值为 ,则单元格的值name包含在相应行的 中authorsFalse否则为 。

所以结果将如下所示。

Authors Name Check

s.Rogers, T.williams H.Tov FALSE

M.White,J.Black J.Black TRUE

我尝试过、、、、.str.contains()等。但 Python 返回错误:“Series”对象是可变的,因此无法对其进行哈希处理。有人知道如何在 Python 中创建第三列吗?.str.extract()``.str.find()``.where()


阅读 6

收藏
2024-11-04

共1个答案

小能豆

你可以使用 apply 方法结合 lambda 函数来检查每行中的 name 是否包含在 authors 列中。由于 authorsname 列中的内容是字符串,你可以将 nameauthors 中的出现情况作为布尔值进行判断并创建第三列 Check

import pandas as pd

# 示例数据
data = {
    'authors': ['s.Rogers, T.williams', 'M.White,J.Black'],
    'name': ['H.Tov', 'J.Black']
}
df = pd.DataFrame(data)

# 创建 'Check' 列,判断 `name` 是否包含在 `authors` 中
df['Check'] = df.apply(lambda row: row['name'] in row['authors'], axis=1)

print(df)

结果

               authors     name  Check
0  s.Rogers, T.williams    H.Tov  False
1       M.White,J.Black  J.Black   True

解释

  • apply(lambda row: row['name'] in row['authors'], axis=1) 会逐行检查 name 是否包含在 authors 字符串中,并返回 TrueFalse
  • 这样可以在不使用 .str.contains() 等方法的情况下实现所需的结果。
2024-11-04