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

我的 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

我试过拆分 df.str.split('=|;', expand=True) 但它将值和字段拆分为单独的列

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

谢谢你的帮助

最佳答案

我认为这里可以在列表理解中使用拆分 - 首先通过 ; 然后通过 = 并将其转换为字典,所以最后可以使用 DataFrame 构造函数:

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 (L)
[{'A': '1', 'B': '3', 'C': 'c6'}, {'A': '2', 'C': 'c7', 'D': '8'}]

https://stackoverflow.com/questions/61744204/

相关文章:

javascript - web3.eth.accounts[0] 返回未定义和 app.vote(

javascript - 在 includes() 中使用 "OR"运算符来试验字符串中是否存在任何

bash - 如何捕获输入来控制截图功能?

json - 在 typescript 中为 JSON 文件添加类型定义

wordpress - Post Object Timber/Twig WordPress 问题

java - Intellij Idea : sbt refresh FetchError$Down

amazon-web-services - 如何替换 AWS Auto Scaling 组中的特定实

google-cloud-platform - GCP Nat 后超时

c - 等待运行目标的 makefile 列表

python - 如何在 Nifi 中将 pandas 数据帧从一个处理器传递到另一个处理器?