我的 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"运算符来试验字符串中是否存在任何
json - 在 typescript 中为 JSON 文件添加类型定义
wordpress - Post Object Timber/Twig WordPress 问题
java - Intellij Idea : sbt refresh FetchError$Down
amazon-web-services - 如何替换 AWS Auto Scaling 组中的特定实