繁体   English   中英

如何使用模式匹配字符串并返回自定义输出

[英]How to match string using pattern and return custom output

我正在尝试使用下面代码中的正则表达式模式匹配列中的字符串。

import pandas as pd

data = {'col1': ['aa', 'aabc', '111aabc222']}
df = pd.DataFrame(data)
print(df)

pat_data = {'name': ['aa', '111(.*?)222']}
df_p = pd.DataFrame(pat_data)
print(df_p)

pat = "|".join(map(str,df_p['name']))
print(pat)

# This one works fine 
df['col1'].str.extract('(' + pat + ')', expand=False)

输出:

0 1
0
1
2 111aabc222

预期输出:

我只需要正则表达式中使用的开始和结束字符串的组合作为输出。 我怎样才能修改我的代码来做到这一点?

0 1
0
1
2 111 - 222

你想要的并不完全清楚,我的理解是你想要匹配字符串的子部分。 然后直接在初始子模式中设置捕获组并对输出进行后处理:

pat_data = {'name': ['(aa)', '(111).*?(222)']}
# ...
df['out'] = (df['col1'].str.extract(pat, expand=False)
             .stack().groupby(level=0).agg(' - '.join)
            )

输出:

         col1        out
0          aa         aa
1        aabc         aa
2  111aabc222  111 - 222

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM