首页 > 解决方案 > Python Pandas:从单元格中提取数据并将其转换为列

问题描述

我有一个有点混乱的数据集,这种模式:

ID       Value
abc      (john:10),(albert:5),(hanna:7) ...
def      (frank:5),(dave:8),(ben:11) ...

我当然希望有这种格式的数据:

ID       Value1  Value2
abc      john       10
abc      albert      5
abc      hanna       7
def      frank       5
def      dave        8
def      ben         11

但是,我对如何做到这一点有些困惑?我能想出的唯一解决方案是循环并将非常新的数据点添加到新的数据帧中。

是否有更好、更有效的方法?

谢谢你!

标签: pythonpandas

解决方案


您可以使用explodestr.extract

df = df.assign(Value = df.Value.str.split(',')).explode('Value')
df[['Value_1', 'Value_2']] = df.Value.str.extract(pat=r'\((\w+):(\d+)\)')
df = df.drop('Value', axis =1)

输出:

    ID Value_1 Value_2
0  abc    john      10
0  abc  albert       5
0  abc   hanna       7
1  def   frank       5
1  def    dave       8
1  def     ben      11

推荐阅读