Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个子字符串匹配模式提取到列中_Python_Regex_Pandas - Fatal编程技术网

Python 将多个子字符串匹配模式提取到列中

Python 将多个子字符串匹配模式提取到列中,python,regex,pandas,Python,Regex,Pandas,我的熊猫数据框有如下字符串 A=1;B=3;C=c6 A=2;C=c7;D=8 A B C D 1 3 c6 NaN 2 NaN c7 8 我想将每个字段中的值提取到单独的列中,然后使用字段名作为如下列 A=1;B=3;C=c6 A=2;C=c7;D=8 A B C D 1 3 c6 NaN 2 NaN c7 8 我尝试了拆分df.str.split'=|',expand=True,但它将值和字段

我的熊猫数据框有如下字符串

A=1;B=3;C=c6
A=2;C=c7;D=8
A    B    C    D
1    3    c6   NaN
2    NaN  c7   8
我想将每个字段中的值提取到单独的列中,然后使用字段名作为如下列

A=1;B=3;C=c6
A=2;C=c7;D=8
A    B    C    D
1    3    c6   NaN
2    NaN  c7   8
我尝试了拆分df.str.split'=|',expand=True,但它将值和字段拆分为单独的列

我还尝试使用df.str.extractor'=\s*[^\.]*\s*\;',expand=True,但它只返回第一次出现的值


感谢您的帮助

我认为在列表理解中使用拆分是可能的-首先;然后按=并将其转换为字典,这样就可以使用数据帧构造函数:

print (df)
            col
0  A=1;B=3;C=c6
1  A=2;C=c7;D=8

L = [dict([y.split('=') for y in x.split(';')]) for x in df['col']]

df = pd.DataFrame(L)
print (df)
   A    B   C    D
0  1    3  c6  NaN
1  2  NaN  c7    8
详情:


我认为在列表理解中使用拆分是可能的——首先是;然后按=并将其转换为字典,这样就可以使用数据帧构造函数:

print (df)
            col
0  A=1;B=3;C=c6
1  A=2;C=c7;D=8

L = [dict([y.split('=') for y in x.split(';')]) for x in df['col']]

df = pd.DataFrame(L)
print (df)
   A    B   C    D
0  1    3  c6  NaN
1  2  NaN  c7    8
详情:


这是正则表达式的方法

df = pd.DataFrame(dict(re.findall(r'(\w+)=(\w+)', x)) for x in df['col'])

这是正则表达式的方法

df = pd.DataFrame(dict(re.findall(r'(\w+)=(\w+)', x)) for x in df['col'])

我不认为这比使用黑魔法更简单+1我不认为这比使用黑魔法更简单+1.