我在 pandas DataFrame 中有两列:authors和name。我想创建第三列:True如果相应行的值为 ,则单元格的值name包含在相应行的 中authors,False否则为 。
authors
name
True
False
所以结果将如下所示。
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()
.str.contains()
.str.extract()``.str.find()``.where()
你可以使用 apply 方法结合 lambda 函数来检查每行中的 name 是否包含在 authors 列中。由于 authors 和 name 列中的内容是字符串,你可以将 name 在 authors 中的出现情况作为布尔值进行判断并创建第三列 Check:
apply
lambda
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)