使用python将项目从现有列剥离到新列

使用python将项目从现有列剥离到新列,python,pandas,dataframe,Python,Pandas,Dataframe,python新手。我想从DF列中删除名称。 我正在循环浏览列中列表中的每一项,但在大尺寸CSV上执行此操作的可接受方式是什么 输入DF: Entity Details 0 Entity1 street=First,name=John,postcode=123 1 Entity2 name=Billy 2 Entity3 stre

python新手。我想从DF列中删除名称。 我正在循环浏览列中列表中的每一项,但在大尺寸CSV上执行此操作的可接受方式是什么

输入DF:

    Entity                                     Details
0  Entity1         street=First,name=John,postcode=123
1  Entity2                                  name=Billy
2  Entity3  street=Second,interest=walking,name=Julian
3  Entity4                                          
代码:

输出DF:

    Entity                                         Details    Name
0  Entity1         [street=First, name=John, postcode=123]    John
1  Entity2                                    [name=Billy]   Billy
2  Entity3  [street=Second, interest=walking, name=Julian]  Julian
3  Entity4                                              []     NaN

下面是如何使用正则表达式提取来获取名称

df['name'] = df['Details'].str.extract(r'name=(\w+)')
这给

    Entity  Details                                     name
0   Entity1 street=First,name=John,postcode=123         John
1   Entity2 name=Billy                                  Billy
2   Entity3 street=Second,interest=walking,name=Julian  Julian
3   Entity4                                             NaN
我通常使用
apply()
函数结合单独的定义来处理数据列

下面我使用
re
Details
字符串拆分为列,以提取
name

import re
def get_name(row):
    it=iter(re.split(',|=',row))
    name_val = [next(it) for x in it if x=='name']
    if name_val:
        return name_val[0]
    else:
        return []
    
df['Name']=df['Details'].apply(lambda row:get_name(row))

输出

import re
def get_name(row):
    it=iter(re.split(',|=',row))
    name_val = [next(it) for x in it if x=='name']
    if name_val:
        return name_val[0]
    else:
        return []
    
df['Name']=df['Details'].apply(lambda row:get_name(row))

Entity      Details                                     Name
0   Entity1 street=First,name=John,postcode=123         John
1   Entity2 name=Billy                                  Billy
2   Entity3 street=Second,interest=walking,name=Julian  Julian
3   Entity4                                             []