【问题标题】:split dictionary in pandas into separate columns [duplicate]将熊猫中的字典拆分为单独的列[重复]
【发布时间】:2020-03-21 21:18:02
【问题描述】:

II 有一个包含 3 列(名称、代码、值)的 serie 对象,我从以下函数中获得:

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

【问题讨论】:

    标签: python pandas function dataframe dictionary


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-05
      • 2021-04-13
      • 2020-05-08
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2018-10-17
      • 2020-01-08
      相关资源
      最近更新 更多