基于另一列使用pandas删除/替换列值

2024-09-27 00:18:25 发布

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

我有这样一个数据框:

df
col1     col2      col3
 ab       1        prab
 cd       2        cdff
 ef       3        eef

我想从col3值中删除col1值

最终的数据帧应该是这样的<

df
col1     col2      col3
 ab       1        pr
 cd       2        ff
 ef       3        e

如何以最有效的方式利用熊猫?你知道吗


Tags: 数据ltdfab方式cdprcol2
3条回答

看起来循环是不可避免的,因为您必须替换/删除子字符串。在这种情况下,列表理解可能会派上用场:

%%timeit
df.apply(lambda x: x['col3'].replace(x['col1'], ''), axis=1)

# 767 µs ± 24.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit
[a.replace(b,'') for a,b in zip(df['col3'], df['col1'])]

# 24.4 µs ± 3.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

axis=1上使用.applyreplace

df['col3'] = df.apply(lambda x: x['col3'].replace(x['col1'], ''), axis=1)

输出

  col1  col2 col3
0   ab     1   pr
1   cd     2   ff
2   ef     3    e

或许这可能有用:

df.col3.str.replace(df.col1, "")

另请参见: https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html

相关问题 更多 >

    热门问题