且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

用新的数据框替换行

更新时间: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