【发布时间】:2021-11-18 05:46:22
【问题描述】:
基于以下数据框:
import json
import numpy as np
import pandas as pd
test_list = ['purple', 'red', 'yellow']
df = pd.DataFrame({'numbers': [1, 2, 3], 'colors': [['red','blue'], ['white'], ['blue','yellow']]})
df['colors_new'] = df.colors.map(tuple)
我正在尝试生成一个新列,如果 test_list 中的至少一个元素在每一行中,那么我将该行标记为 true
df['found'] = any((True for x in test_list if x in df['colors_new']))
df
在上面的例子中,第 0 行和第 2 行应该为真,因为红色在第 0 行,黄色在第 2 行
这将是最有效和正确的方法,因为我目前得到错误的结果
我认为最接近我能得到正确回应的是
df['found'] = ['red' in x for x in df['colors_new']]
但是当我有多个项目时使用这个不起作用(test_list = ['purple', 'red', 'yellow'])
【问题讨论】:
-
你可以使用集合和交集来代替。
标签: python pandas dataframe tuples