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

R语言:将数据框单列按字符长度拆分为多列

按固定字符长度拆分数据框文本列

Python (Pandas) 实现

方法1:正则表达式快速拆分

利用正则匹配固定长度的字符组,结合str.extract直接提取为多列,适合简单场景:

import pandas as pd

# 示例数据框
df = pd.DataFrame({
    'text': ["I need more data today,", "Hello World!", "Short"]
})

chunk_size = 5
# 生成匹配足够多组的正则(这里设10组,可根据最长文本调整)
pattern = ''.join([f'(.{{1,{chunk_size}}})' for _ in range(10)])
# 提取拆分列并重命名
split_cols = df['text'].str.extract(pattern)
split_cols.columns = [f'col{i+1}' for i in range(split_cols.shape[1])]
# 合并到原数据框
result_df = pd.concat([df, split_cols], axis=1)

方法2:自定义函数拆分

需要灵活逻辑时,用自定义函数拆分后展开为列:

def split_text(s, chunk_size):
    return [s[i:i+chunk_size] for i in range(0, len(s), chunk_size)]

# 应用函数并转为列
split_cols = df['text'].apply(lambda x: pd.Series(split_text(x, 5)))
split_cols.columns = [f'col{i+1}' for i in range(split_cols.shape[1])]
result_df = pd.concat([df, split_cols], axis=1)

R 实现

用stringr包的str_split_fixed可快速完成拆分:

library(dplyr)
library(stringr)

# 示例数据框
df <- data.frame(
    text = c("I need more data today,", "Hello World!", "Short"),
    stringsAsFactors = FALSE
)

chunk_size <- 5
# 计算所需最大列数
max_cols <- ceiling(max(nchar(df$text)) / chunk_size)
# 按固定长度拆分并转为数据框
split_cols <- str_split_fixed(df$text, paste0("(?<=.{", chunk_size, "})"), n = max_cols)
split_cols_df <- as.data.frame(split_cols)
colnames(split_cols_df) <- paste0("col", 1:max_cols)
# 合并结果
result_df <- cbind(df, split_cols_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:45:46