如何更改"喜剧"中的值?列基于对应的"类型"列值(列表)包含"喜剧"?
" Comedy"的结果列应
<td th:text="*{#temporals.format(thedate, 'yyyy-MM-dd HH:mm:ss')}">
我已尝试过.isin,.contains,.find等所有内容。
注意:最初是&#34;类型中的值&#34;列看起来像
True
False
True
True
True
但我使用
拆分它们Adventure|Animation|Children|Comedy|Fantasy
答案 0 :(得分:3)
如果in
列有apply
,请使用list
参数替换NaN
添加fillna
:
df["genres"] = df.genres.str.split("|")
df['new'] = df['genres'].fillna('').apply(lambda x: 'Comedy' in x)
print (df)
genres new
0 [Adventure, Animation, Children, Comedy, Fantasy] True
1 [Adventure, Children, Fantasy] False
2 [Comedy, Romance] True
3 [Comedy, Drama, Romance] True
4 [Comedy] True
5 NaN False
感谢John Galt寻求解决方案:
df['new'] = ['Comedy' in x for x in df['genres']]
没有list
使用contains
参数na=False
:
df['new'] = df['genres'].str.contains('Comedy', na=False)
print (df)
genres new
0 Adventure|Animation|Children|Comedy|Fantasy True
1 Adventure|Children|Fantasy False
2 Comedy|Romance True
3 Comedy|Drama|Romance True
4 Comedy True
5 NaN False
答案 1 :(得分:3)
试试这个:
In [97]: df
Out[97]:
genres
0 [Adventure, Animation, Comedy]
1 [Fantasy, Horror]
2 [Comedy, Drama]
3 [nan]
4 NaN
In [98]: df['Comedy'] = df.genres.fillna('').apply(lambda x: len(set(x) & set(['Comedy'])) == 1)
In [99]: df
Out[99]:
genres Comedy
0 [Adventure, Animation, Comedy] True
1 [Fantasy, Horror] False
2 [Comedy, Drama] True
3 [nan] False
4 NaN False