gpt4 book ai didi

python - 字符串包含两个 pandas 系列

转载 作者:太空狗 更新时间:2023-10-30 01:42:34 25 4
gpt4 key购买 nike

我在 pandas 数据框中有一个包含一些字符串的系列。我想在相邻列中搜索该字符串是否存在。

在下面的示例中,我想搜索“选择”系列中的字符串是否包含在“水果”系列中,在新列“选择匹配”中返回真 (1) 或假 (0)。

示例数据框:

import pandas as pd
d = {'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'fruit': [
'apple, banana', 'apple', 'apple', 'pineapple', 'apple, pineapple', 'orange', 'apple, orange', 'orange', 'banana', 'apple, peach'],
'choice': ['orange', 'orange', 'apple', 'pineapple', 'apple', 'orange', 'orange', 'orange', 'banana', 'banana']}
df = pd.DataFrame(data=d)

所需的数据框:

import pandas as pd
d = {'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'fruit': [
'apple, banana', 'apple', 'apple', 'pineapple', 'apple, pineapple', 'orange', 'apple, orange', 'orange', 'banana', 'apple, peach'],
'choice': ['orange', 'orange', 'apple', 'pineapple', 'apple', 'orange', 'orange', 'orange', 'banana', 'banana'],
'choice_match': [0, 0, 1, 1, 1, 1, 1, 1, 1, 0]}
df = pd.DataFrame(data=d)

最佳答案

这是一种方法:

df['choice_match'] = df.apply(lambda row: row['choice'] in row['fruit'].split(','),\
axis=1).astype(int)

解释

  • df.apply with axis=1 循环遍历每一行并应用逻辑;它接受匿名 lambda 函数。
  • row['fruit'].split(',')fruit 列创建一个列表。这是必要的,例如,pineapple 中不考虑 apple
  • astype(int) 是将 bool 值转换为整数以供显示所必需的。

关于python - 字符串包含两个 pandas 系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49040364/

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