繁体   English   中英

如何将正则表达式结果拆分为多列(Python)

[英]How to split the regex result into multiple column (Python)

我正在尝试使用此脚本在 Python dataframe 中执行正则表达式

import pandas as pd
df1 = {'data':['1gsmxx,2gsm','abc10gsm','10gsm','18gsm hhh4gsm','Abc:10gsm','5gsmaaab3gsmABC55gsm','abc - 15gsm','3gsm,,ff40gsm','9gsm','VV - fg 8gsm','kk 5gsm 00g','001….abc..5gsm']}
df1 = pd.DataFrame(df1)
df1
df1['Result']=df1['Data'].str.findall('(\d{1,3}\s?gsm)')

或者

df2=df1['data'].str.extractall('(\d{1,3}\s?gsm)').unstack()

但是,它在一列中产生了多个结果。 我有可能得到如下所示的结果吗?

在此处输入图像描述

pandas.Series.str.extractallunstack一起使用。

如果您想要原始系列,请使用pandas.concat

df2 = df1['data'].str.extractall('(\d{1,3}\s?gsm)').unstack()
df = pd.concat([df1, df2.droplevel(0, 1)], 1)
print(df)

Output:

                    data      0      1      2
0            1gsmxx,2gsm   1gsm   2gsm    NaN
1               abc10gsm  10gsm    NaN    NaN
2                  10gsm  10gsm    NaN    NaN
3          18gsm hhh4gsm  18gsm   4gsm    NaN
4              Abc:10gsm  10gsm    NaN    NaN
5   5gsmaaab3gsmABC55gsm   5gsm   3gsm  55gsm
6            abc - 15gsm  15gsm    NaN    NaN
7          3gsm,,ff40gsm   3gsm  40gsm    NaN
8                   9gsm   9gsm    NaN    NaN
9           VV - fg 8gsm   8gsm    NaN    NaN
10           kk 5gsm 00g   5gsm    NaN    NaN
11        001….abc..5gsm   5gsm    NaN    NaN

暂无
暂无

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

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