根据“键=值”项将熊猫列拆分为多列
我有一个数据框,其中一列包含“键=值”格式的多个信息。该列中可以出现近一百种不同的“key=value”,但为了简单起见,我将仅使用 4 ( _browser, _status, _city, tag)
id name properties
0 A {_browser=Chrome, _status=TRUE, _city=Paris}
1 B {_browser=null, _status=TRUE, _city=London, tag=XYZ}
2 C {_status=FALSE, tag=ABC}
如何将这种拆分属性字符串列转换为多列?
预期的输出是:
id name _browser _status _city tag
0 A Chrome TRUE Paris
1 B null TRUE London XYZ
2 C FALSE ABC
注意:此值也可以包含空格(例如_city=Rio de Janeiro)
回答
让我们使用str.findall正则表达式捕获组从properties列中提取键值对:
df.join(pd.DataFrame(
[dict(l) for l in df.pop('properties').str.findall(r'(w+)=([^,}]+)')]))
结果:
id name _browser _status _city tag
0 A Chrome TRUE Paris NaN
1 B null TRUE London XYZ
2 C NaN FALSE NaN ABC