拆分原始值并将其映射到不同的列

2024-06-16 12:03:25 发布

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

我想借助python中的nameparser包映射一个拆分名称的函数。你知道吗

我使用的函数如下:

def extract_parts(name):
    first, middle, last = (HumanName(name)).first,(HumanName(name)).middle, (HumanName(name)).last
    return first, middle, last

数据帧类似于下面的NAMES列,其中包含需要用nameparser包拆分的名称。你知道吗

ID | NAMES                    | column
1  | Ben Jerry                | I
2  | John Jack Joe            | I 
3  | Dr. Amelia von Lugenwitz | I
4  | Cristian Maria de Angel  | I
5  | The CBA Company          | C
6  | FBPTQ                    | C

我循环函数并尝试映射它,但它只返回最后一个值。我想这是有道理的。但是.apply()不起作用,或者我不知道如何正确应用它。你知道吗

for index in range(len(file)):
    if file["column"][index] == "A":
        try:
            file["COLUMN1"], file["COLUMN2"], file["COLUMN3"] = extract_parts(file["ORIGINAL"][index])
        except TypeError as e:
            print(e)

它应该返回一个数据帧:

ID | COLUMN1 | COLUMN2 | COLUMN3
1  | Ben     |         | Jerry
2  | John    | Jack    | Joe
3  | Amelia  |         | von Lugenwitz
4  | Cristian| Maria   | de Angel

其中,COLUMN1表示nameparser HumanName()提取的名字,COLUMN2表示中间名,COLUMN3表示姓氏。你知道吗


Tags: 函数name名称middleindexextractfilefirst
1条回答
网友
1楼 · 发布于 2024-06-16 12:03:25

假设您的数据帧有一个names列,例如:

                      names
0                 Ben Jerry
1             John Jack Joe
2  Dr. Amelia von Lugenwitz
3   Cristian Maria de Angel

可以使用zip将值解压到多个列中:

df['first'], df['middle'], df['last'] = zip(*df['names'].apply(extract_parts))

相关问题 更多 >