You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据另一列切片DataFrame列?遇AttributeError报错求助

解决Pandas中按指定长度切片字符串列的问题

先来看你的问题场景:你有这样一个DataFrame:

import pandas as pd

data = {
    "Main": ["Sri playnig well cricket", "sri went out", "Ram is in", "Ram went to UK,US"],
    "Length": [5, 2, 1, 2]
}
df = pd.DataFrame(data)

你希望根据Length列的数值,对Main列的字符串进行对应长度的切片,得到这样的结果:

MainLength
Sri p5
sr2
R1
Ra2

你的代码为什么报错?

你写的apply函数有两个核心问题:

  1. 字符串没有slice()方法:Python里对字符串切片要用[起始索引:结束索引]的语法,而不是调用slice()方法,这就是你遇到AttributeError: 'str' object has no attribute 'slice'的直接原因。
  2. 多余的循环逻辑:你在函数里循环了整个df["Length"],但实际上每一行只需要用到当前行的Length值,循环所有行的Length完全没必要,还会导致逻辑混乱。

正确的解法

我们只需要针对每一行取对应的Length值,对Main字符串做切片即可,这里提供两种写法:

方法1:自定义函数

def slicer(row):
    # 取当前行的Length值,对Main字符串进行前N个字符的切片
    return row['Main'][:row['Length']]

# 将处理后的结果替换原来的Main列
df['Main'] = df.apply(slicer, axis=1)

方法2:更简洁的lambda表达式

如果不想写单独的函数,用lambda可以一行搞定:

df['Main'] = df.apply(lambda row: row['Main'][:row['Length']], axis=1)

运行上面的代码后,你就能得到期望的结果了。

内容的提问来源于stack exchange,提问作者Pyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:09:49