如何在Pandas中完整访问单元格字符串值及分类列单个分类?
问题1:Pandas中完整获取单元格字符串,避免逐个读字符
如果访问单元格时只能拿到单个字符,大概率是两种情况:要么你误把字符串当成列表来做双层索引,要么单元格本身存的就是字符列表。解决办法:
- 直接拿完整值:如果单元格是字符串类型,
df['列名'].iloc[行号]或者df['列名'][行号]就能拿到完整字符串,别再加第二层索引(比如[0][1]这种操作会取字符串的第2个字符)。 - 检查并修复类型:用
type(df['列名'].iloc[0])查看类型,如果是list而非str,说明数据读入时被拆成了字符列表,转成字符串即可:df['列名'] = df['列名'].apply(''.join)
问题2:从Categories列提取完整分类值
你用print(df["categories"][0][1])输出单引号,是因为df["categories"][0]是个带分类的字符串(比如格式像"'Backend', 'Frontend'"),不是列表。此时[1]取的是字符串的第2个字符(就是单引号),不是你要的分类元素。按下面步骤处理:
- 把字符串转成分类列表:先清掉冗余的引号、空格,再按逗号拆分。代码示例:
如果需要保留分类前后的空格,去掉# 适配类似 "'Backend', 'Frontend'" 的单元格格式 df['categories'] = df['categories'].apply( lambda x: [item.strip().strip("'") for item in x.split(',')] ).strip()即可。 - 提取分类:处理完之后,
df["categories"][0][1]就能拿到Backend(或者你要的' Backend ')。 - 提前规避:如果是从CSV读的数据,读的时候直接处理格式更高效:
import pandas as pd df = pd.read_csv( '你的文件.csv', converters={'categories': lambda x: [item.strip().strip("'") for item in x.split(',')]} )
内容的提问来源于stack exchange,提问作者sabbath54
相关产品推荐
相关产品推荐

