从pandas df列的字符串预设列表中拆分字符串

2024-06-06 12:28:01 发布

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

我有一个熊猫数据帧,如下所示。它大约有一百万行。在

name = ['Jake','Matt', 'Henry']

0   A        
1 Jake Hill
2 Matt Dawn
3 Matt King
4 White Henry
5 Hyde Jake

我想迭代列表和df['A']列,只返回名字。例如,最终的数据帧应该如下所示。在

^{pr2}$

提前谢谢。我是python新手,所以仍然在寻找最简单的方法。在


Tags: 数据namedf列表matt名字hydewhite
3条回答

您有一个要匹配的名称列表,以及一系列要检查的名称。在这里使用带str.extract的正则表达式。在

df.A.str.extract(r'({})'.format('|'.join(name)))

^{pr2}$

以下是一种实现此目的的方法:

first_name = ['Jake','Matt', 'Henry']

df = pd.DataFrame({'A': ['Jake Hill', 'Matt Dawn', 'Matt King', 'Henry White', 'Jake Hyde']})

df['B'] = df['A'].str.split().apply(lambda x: x[0] if x[0] in first_name else ' '.join(x))

你会得到:

^{pr2}$

您需要:

first_name = ['Jake','Matt', 'Henry']

df = pd.DataFrame({'A': ['Jake Hill', 'Matt Dawn', 'Matt King', 'Henry White','Jake Hyde','Dwayne John']})

def func(x):
    for k in first_name:
        if k in x:
            return k 
    return x

df['A'] = df['A'].apply(lambda x: func(x))

输出:

^{pr2}$

相关问题 更多 >