Python 基于';将列拆分为多个列;键=值';项目
我有一个数据框,其中一列包含“key=value”格式的多个信息。该列中几乎可以出现100个不同的“key=value”,但为了简单起见,我将仅使用4个(Python 基于';将列拆分为多个列;键=值';项目,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,其中一列包含“key=value”格式的多个信息。该列中几乎可以出现100个不同的“key=value”,但为了简单起见,我将仅使用4个(\u浏览器、\u状态、\u城市、标记)作为示例 如何将属性字符串列拆分为多个列 预期产出为: id name _browser _status _city tag 0 A Chrome TRUE Paris 1 B null TRUE
\u浏览器、\u状态、\u城市、标记
)作为示例
如何将属性字符串列拆分为多个列
预期产出为:
id name _browser _status _city tag
0 A Chrome TRUE Paris
1 B null TRUE London XYZ
2 C FALSE ABC
注意:此值还可以包含空格(例如,
\u city=Rio de Janeiro
)让我们使用带有正则表达式捕获组的str.findall
从属性列中提取键值对:
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
是列str
type或dict中的属性。它是一个字符串,值之间用=sign@Huzefa在我的例子中,我不知道properties列中可以有多少个值,并且它们不遵循严格的顺序,该项可以出现在StringBham的任何部分,但是当我有带空格的值时,如何更改的正则表达式?例如,城市=里约热内卢Janeiro@eduardoftdo在这种情况下,我想你可以试试df.pop(properties').str.findall(r'(\w+)=([^,\}]+)
谢谢你Shubham。这太棒了@爱德华多:快乐编码!如果我在键本身中有空格,有没有办法执行这个正则表达式?
id name _browser _status _city tag
0 A Chrome TRUE Paris NaN
1 B null TRUE London XYZ
2 C NaN FALSE NaN ABC