如何根据熊猫中另一列的值修剪字符串



我有一个熊猫数据帧,如下所示:

df:

col1       col2 
ACDCAAAAA    4
CDACAAA      2
ADDCAAAAA    3

我需要根据相应的col2值修剪col1字符串,如下所示:

dfout:

col1     col2 
ACDCA      4
CDACA      2
ADDCAA     3

我尝试过:df['col1].str[:-(df['col2'])],但在输出中得到了NaN。

有人知道怎么做吗?谢谢你抽出时间。

将列表压缩与zip:一起使用

df['new'] = [a[:-b] for a, b in zip(df['col1'], df['col2'])]

正则表达式选项可能是:

df["col1"] = df["col1"].str.replace(r'.{' + df["col2"].astype(str) + r'}$', '')

使用df.apply:

In [2613]: df['col1'] = df.apply(lambda x: x['col1'][: x['col2'] + 1], 1)

最新更新