将大熊猫中的字典拆分为单独的列

安尼斯15

我有一个包含三个列(名称,代码,值)的系列对象,我从下面的函数中获取该对象:

def get_fuzz(df, w):
    s = df['Legal_Name'].apply(lambda y: fuzz.token_set_ratio(y, w))
    idx = s.idxmax()
    return {'name': df['Legal_Name'].iloc[idx], 'lei': df['LEI'].iloc[idx], 'val': s.max()}

df1['Name'].apply(lambda x: get_fuzz(df, x))

意甲看起来像这样

output
0    {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1    {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...
2    {'name': 'VCC Live Group Zártkörűen Működő Rés...

我可以使用以下代码将输出分配给我的数据框。

df1.assign(search=df1['Name'].apply(lambda x: get_fuzz(df, x)))

我得到的数据框看起来像这样

    ID  Name             search
0   1   Marshalll   {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1   2   JP Morgan   {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...

如何将该列分为三列?

希望最终输出

    ID  Name        Name_bis            LEI             Value
0   1   Marshalll   MGR Farms LLC    984500486BBD        57
1   2   Zion        ZION INVESTMENT  549300D2O           100
CDJB

假设您将数据框设置为:-

>>> df
   ID       Name                                             search
0   1  Marshalll  {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1   2  JP Morgan  {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...

您可以使用:-

>>> df = pd.concat([df.drop(['search'], axis=1), df['search'].apply(pd.Series)], axis=1)
>>> df
   ID       Name              name           lei  value
0   1  Marshalll     MGR Farms LLC  984500486BBD     57
1   2  JP Morgan  RAVENOL NORGE AS     549300D2O    100

然后根据需要更新列名称:-

>>> df.columns = ['ID', 'Name', 'Name_bis', 'LEI', 'Value']
>>> df
    ID       Name          Name_bis           LEI  Value
0   1  Marshalll     MGR Farms LLC  984500486BBD     57
1   2  JP Morgan  RAVENOL NORGE AS     549300D2O    100

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章