将字符串对象拆分为列

2024-05-16 21:12:21 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,世界

我有一个serie对象,它包含3列(name、code、value),我从下面的函数中得到:

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...

问题

如何将此列拆分为3列

需要最终输出

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

Tags: lambdanamedfgetdf1applymgrlegal
1条回答
网友
1楼 · 发布于 2024-05-16 21:12:21

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

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

你可以的use:- 你知道吗

>>> 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

然后将列名更新为needed:- 你知道吗

>>> 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

相关问题 更多 >