根据“键=值”项将熊猫列拆分为多列

我有一个数据框,其中一列包含“键=值”格式的多个信息。该列中可以出现近一百种不同的“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


以上是根据“键=值”项将熊猫列拆分为多列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>