Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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_Pandas_Dataframe - Fatal编程技术网

Python 基于';将列拆分为多个列;键=值';项目

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

我有一个数据框,其中一列包含“key=value”格式的多个信息。该列中几乎可以出现100个不同的“key=value”,但为了简单起见,我将仅使用4个(
\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