使用表中的另一列替换一列中的值的有效方法

2024-03-29 08:50:11 发布

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

如何使用不同列[2]中的字符串值列表替换数据帧列[1]中的字符串值。你知道吗

数据

          0                       1            2              3
0  3000 20%  dummy1 3000 dummy2 20%  [3000, 20%]  dummy1 dummy2

我想用列2中的列表替换列1中的字符串值,即“dummy1 3000 dummy2 20%”,即“[3000,20%]”。所以3000和20%从字符串中替换为“”(空字符串),形成第3列(结果),即“dummy1 dummy2”

代码

df = pd.DataFrame([['3000 20%', 'dummy1 3000 dummy2 20%']])
df[2] = df[0].str.split(' ')

def replace_string(x):
    repl_string = str(x[1])
    for key in x[2]:
        repl_string = repl_string.replace(key, '')
    return ' '.join(repl_string.split())

df[3] = df.apply(replace_string, axis=1)

我目前已经写了上面的代码,对于大型数据帧来说速度很慢。我该如何提高这段代码的效率,或者有没有其他方法可以做到这一点?你知道吗


Tags: 数据key字符串代码dataframedf列表string
1条回答
网友
1楼 · 发布于 2024-03-29 08:50:11

使用嵌套列表理解:

df = pd.DataFrame([['3000 20%', 'dummy1 a 3000 dummy2 20%'],
                   ['abc 2%', 'klmn 3000 dummy2 2%']])
print (df)
          0                         1
0  3000 20%  dummy1 a 3000 dummy2 20%
1    abc 2%       klmn 3000 dummy2 2%

df[3] = [' '.join(y for y in j.split() if y not in i.split()) for i, j in zip(df[0], df[1])]
print (df)
          0                         1                 3
0  3000 20%  dummy1 a 3000 dummy2 20%   dummy1 a dummy2
1    abc 2%       klmn 3000 dummy2 2%  klmn 3000 dummy2

相关问题 更多 >