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

Pandas中拆分长文本行及按字符串长度转换DataFrame遇问题

解决你的两个Pandas数据处理需求

没问题,这两个需求我帮你一步步拆解解决~

一、将含长文本的行拆分为多行

这里分两种最常见的场景来处理:

场景1:文本有明确分隔符(如逗号、分号、换行符)

如果你的长文本是用某个分隔符拼接的(比如"苹果,香蕉,橙子"),直接用str.split()拆分后,再用explode()展开成多行即可,还能保留原行的其他列数据:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'id': [1, 2],
    'text': ['这是一段,用逗号分隔的,长文本', '另一段;用分号;拆分的内容']
})

# 按逗号拆分并展开(如果是分号就把','换成';')
df_split = df.assign(text=df['text'].str.split(',')).explode('text', ignore_index=True)
print(df_split)

场景2:按固定字符长度拆分长文本

如果没有分隔符,需要按固定长度(比如每10个字符拆一行),可以自定义一个拆分函数,再结合apply和explode实现:

def split_text_by_length(text, chunk_size=10):
    # 按指定长度批量截取文本
    return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]

# 示例数据
df = pd.DataFrame({
    'id': [1],
    'text': '这是一段没有分隔符的超长文本,需要按固定长度拆分'
})

# 应用拆分函数并展开为多行
df_split = df.assign(text=df['text'].apply(split_text_by_length)).explode('text', ignore_index=True)
print(df_split)

二、按字符串长度筛选生成新DataFrame

你提到代码有错误,大概率是忽略了Pandas字符串列的str访问器,或者语法写错了。这里给你两种正确的实现方式:

方法1:布尔索引(最常用)

直接通过布尔条件筛选符合长度要求的行,生成新DataFrame:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'text': ['a', 'abc', 'abcd', 'hello world'],
    'value': [1, 2, 3, 4]
})

# 筛选text长度大于3的行
new_df = df[df['text'].str.len() > 3]
print(new_df)

方法2:使用query()方法(更简洁)

如果喜欢更直观的表达式写法,可以用query():

new_df = df.query("text.str.len() > 3")

常见错误排查

  • 错误写法:df['text'].len > 3 → 缺少str访问器,Pandas字符串列必须用.str来调用字符串方法
  • 错误写法:df[df['text'].str.len > 3] → 忘记加括号调用len()方法,正确写法是.str.len()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:56:43