更新时间:2023-12-03 17:44:52
一种方法是将pd.concat
与可迭代的拆分数据帧一起使用,注意为空字典构造单行数据帧:
One way is to use pd.concat
with an iterable of split dataframes, taking care to construct a one-row dataframe for empty dictionaries:
splits = [pd.DataFrame(x if x else [{}]) for x in df.pop('Data')]
lens = list(map(len, splits))
df = pd.DataFrame({'age': np.repeat(df['age'].values, lens),
'name': np.repeat(df['name'].values, lens)})\
.join(pd.concat(splits, ignore_index=True))
print(df)
# age name Mail MailValue
# 0 22 bob NaN NaN
# 1 20 tom B 89.0
# 2 20 tom C 100.0
# 3 19 mat D 71.0
# 4 30 sam NaN NaN