将行中的连接字符串分解并转换为列

问题描述 投票:0回答:1

我是Python的新手,一直在数据转换方面苦苦挣扎。 我有一个数据框,其数据如下。

UserId  PurchaseCnt
u1      Bread:6, Milk:11
u2      Water:3

我想将其转换为数据框,如下所示。我该怎么做?

UserId Bread Milk Water
u1     6     11
u2     0     0    3

我需要对大量数据执行此操作。因此需要一个像样的高效代码。 执行此操作的 python 代码是什么?

pandas dataframe transform
1个回答
0
投票

代码

import re
pat = r'(\w+):(\d+)'
s = df['PurchaseCnt'].map(lambda x: {i: int(j) for i, j in re.findall(pat, x)})
out = df[['UserId']].join(pd.json_normalize(s))

输出:

    UserId  Bread   Milk    Water
0   u1      6.0     11.0    NaN
1   u2      NaN     NaN     3.0

示例代码

import pandas as pd
data = {
    'UserId': ['u1', 'u2'],
    'PurchaseCnt': ['Bread:6, Milk:11', 'Water:3']
}
df = pd.DataFrame(data)
© www.soinside.com 2019 - 2024. All rights reserved.