python如何仅从df字符串中选择特殊元素

python如何仅从df字符串中选择特殊元素,python,pandas,Python,Pandas,请帮忙。 如果字符串中有多个元素,我只需要选择“黄”、“绿”、“黑”或这些元素的组合。 df: 结果应该是: 0 ['green','yellow','black'] 1 ['green','yellow'] 2 ['black'] 3 ['green','yellow'] 4 ['green'] 您的数据帧df: val 0 ['blue','green','white','yellow','orange','pin... 1 ['green','yellow','orang

请帮忙。 如果字符串中有多个元素,我只需要选择“黄”、“绿”、“黑”或这些元素的组合。 df:

结果应该是:

0 ['green','yellow','black']
1 ['green','yellow']
2 ['black']
3 ['green','yellow']
4 ['green']

您的数据帧
df

    val
0   ['blue','green','white','yellow','orange','pin...
1   ['green','yellow','orange','pink','pink']
2   ['white','orange','black']
3   ['green','white','yellow','orange']
4   ['green']
尝试使用
apply()
并列出理解:

df['val']=df['val'].apply(lambda x:eval(x))  #use this only when the data inside val is string
注意:如果上面的行抛出错误,那么只需跳过它并移动到下面的代码(这意味着val列中的数据属于list类型)

最后:

df['val']=df['val'].apply(lambda x:[y for y in x if y=='yellow' or y=='green' or y=='black'])
或(使用任意一个代码)

现在,如果您打印
df
,您将获得:

    val
0   [green, yellow, black]
1   [green, yellow]
2   [black]
3   [green, yellow]
4   [green]

您的数据帧
df

    val
0   ['blue','green','white','yellow','orange','pin...
1   ['green','yellow','orange','pink','pink']
2   ['white','orange','black']
3   ['green','white','yellow','orange']
4   ['green']
尝试使用
apply()
并列出理解:

df['val']=df['val'].apply(lambda x:eval(x))  #use this only when the data inside val is string
注意:如果上面的行抛出错误,那么只需跳过它并移动到下面的代码(这意味着val列中的数据属于list类型)

最后:

df['val']=df['val'].apply(lambda x:[y for y in x if y=='yellow' or y=='green' or y=='black'])
或(使用任意一个代码)

现在,如果您打印
df
,您将获得:

    val
0   [green, yellow, black]
1   [green, yellow]
2   [black]
3   [green, yellow]
4   [green]
尝试:

尝试:


例如,输入数组是否可以多次显示“黄色”?如果是这样的话,那么输出应该是什么呢?@JoseNuno在我的例子中是-no。字符串只包含这个或那个颜色一次。它们是作为列表存储在数据帧或字符串中吗?@ThePyGuy-like字符串,但我通过.str.split(,)将它们转换为列表。例如,输入数组可以多次使用“黄色”吗?如果是这样的话,那么输出应该是什么呢?@JoseNuno在我的例子中是-no。字符串只包含一次这种或那种颜色。它们是作为列表存储在数据帧或字符串中吗?@ThePyGuy-like字符串,但我通过.str.split(,)将它们转换为列表