【发布时间】:2016-07-26 03:26:39
【问题描述】:
我有一个如下所示的列表:li = ['ShortHair','LongHair','Medium Hair']
我想检查 col2 是否包含上述任何子字符串,如果它确实从 col2 获取并更新 col3。如果没有,则将 col3 保持原样。
col1 col2 col3
0 w I have ShortHair U
1 x LongHair You Have V
2 y I have no hair W
3 z Look Medium Hair! L
得到:
col1 col2 col3
0 w I have ShortHair
1 x You Have LongHair
2 y I have no hair W
3 z Look ! Medium Hair
编辑:如果数组中出现多个子字符串,请删除表单 col2 并使用第一个值更新 col3。
我可以从 col2 中删除子字符串,但是我无法更新 col3。我试过了:
data[data.col2.str.contains('|'.join(li)),"col3"] = data["col2"].map(lambda x: re.findall('|'.join(li),x)[0])
它给出IndexError: list index out of range 错误。
我怎样才能最好地做到这一点?
【问题讨论】:
-
如果“你有长发还是短发”怎么办? col3 应该包含什么以及为什么?
-
两个都去掉,先保留。我会更新问题
-
@Alexander 我确信这不会在我使用的数据集中发生。但是,就我的目的而言,取第一个值就足够了
标签: python python-3.x pandas dataframe python-3.5