Hello World ,
我有一个包含三个列(名称,代码,值)的序列对象,该列是从以下函数中获取的:
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
答案 0 :(得分: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