在列中查找特定值并取其旁边的几个下一个元素
Find a specific values in column and take few next elements that are next to it
我有一个任务有问题。我有一个如下所示的值列表:
values = ["a","b","c"]
我的 DF 如下所示:
column_1 column_2
1 sffasdef
2 bsrewsaf
3 tyhvbsrc
4 ertyui1c
5 qwertyyu
我必须检查第 2 列中是否存在列表中的值之一。如果存在,在新列中它应该 return 结果和接下来的 3 个元素,因此 DF 应该如下所示:
column_1 column_2 column_3
1 sffasdef asde
2 bsrewsaf bsre
3 tyhvbsrc bsrc
4 ertyui1c c
5 qwertyyu NaN
你知道如何解决这个问题吗?
此致
使用.str.extract
:
df['column_3'] = df['column_2'].str.extract(f'((?:{"|".join(values)})(?:.?){{3}})')
# OR, possibly more readable
values_re = '|'.join(values)
df['column_3'] = df['column_2'].str.extract(r'((?:' + values_re + ')(?:.?){3})')
输出:
>>> df
column_1 column_2 column_3
0 1 sffasdef asde
1 2 bsrewsaf bsre
2 3 tyhvbsrc bsrc
3 4 ertyui1c c
4 5 qwertyyu NaN
假设您在 values
中有单个字符:
df['column_3'] = df['column_2'].str.extract(fr'([{"".join(values)}].{{,3}})')
输出:
column_1 column_2 column_3
0 1 sffasdef asde
1 2 bsrewsaf bsre
2 3 tyhvbsrc bsrc
3 4 ertyui1c c
4 5 qwertyyu NaN
我有一个任务有问题。我有一个如下所示的值列表:
values = ["a","b","c"]
我的 DF 如下所示:
column_1 column_2
1 sffasdef
2 bsrewsaf
3 tyhvbsrc
4 ertyui1c
5 qwertyyu
我必须检查第 2 列中是否存在列表中的值之一。如果存在,在新列中它应该 return 结果和接下来的 3 个元素,因此 DF 应该如下所示:
column_1 column_2 column_3
1 sffasdef asde
2 bsrewsaf bsre
3 tyhvbsrc bsrc
4 ertyui1c c
5 qwertyyu NaN
你知道如何解决这个问题吗? 此致
使用.str.extract
:
df['column_3'] = df['column_2'].str.extract(f'((?:{"|".join(values)})(?:.?){{3}})')
# OR, possibly more readable
values_re = '|'.join(values)
df['column_3'] = df['column_2'].str.extract(r'((?:' + values_re + ')(?:.?){3})')
输出:
>>> df
column_1 column_2 column_3
0 1 sffasdef asde
1 2 bsrewsaf bsre
2 3 tyhvbsrc bsrc
3 4 ertyui1c c
4 5 qwertyyu NaN
假设您在 values
中有单个字符:
df['column_3'] = df['column_2'].str.extract(fr'([{"".join(values)}].{{,3}})')
输出:
column_1 column_2 column_3
0 1 sffasdef asde
1 2 bsrewsaf bsre
2 3 tyhvbsrc bsrc
3 4 ertyui1c c
4 5 qwertyyu NaN