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

如何对Pandas DataFrame所有列的单元格提取指定字符?

Pandas DataFrame全列提取部分字符的解决方案

你遇到的TypeError: type 'str' is not subscriptable错误,是因为str[:1]直接操作了字符串类型本身,而非针对每个单元格的字符串实例。map方法需要传入可调用的函数,这种类型下标操作是非法的。

下面是两种可行的解决方法:

方法一:使用applymap遍历每个单元格

applymap会对DataFrame中的每个元素执行指定函数,适合需要统一处理所有单元格的场景:

import pandas as pd

data = [['tom', 'jerry'], ['nick', 'fury'], ['juli', 'anna']]
df = pd.DataFrame(data, columns=['Name', 'Name2'])

# 提取每个单元格的第一个字符
df3 = df.applymap(lambda x: x[:1])
print(df3)

如果DataFrame中存在非字符串类型的单元格,可以先统一转为字符串再处理:

df3 = df.astype(str).applymap(lambda x: x[:1])

方法二:使用apply结合str访问器

针对所有列都是字符串类型的场景,用apply对每列调用str[:1],和单列处理逻辑一致:

df3 = df.apply(lambda col: col.str[:1])
print(df3)

这种方法贴合Pandas针对字符串列的优化,执行效率可能更高。

两种方法的输出结果一致:

Name Name2
0    t     j
1    n     f
2    j     a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:42:03