我是Python的新手,一直在数据转换方面苦苦挣扎。 我有一个数据框,其数据如下。
UserId PurchaseCnt
u1 Bread:6, Milk:11
u2 Water:3
我想将其转换为数据框,如下所示。我该怎么做?
UserId Bread Milk Water
u1 6 11
u2 0 0 3
我需要对大量数据执行此操作。因此需要一个像样的高效代码。 执行此操作的 python 代码是什么?
代码
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)