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

如何用Pandas按固定词数拆分未知列数的字符串列?

这问题我之前也遇到过,用Pandas处理这种按固定个数分组拆分的需求其实很简单,咱们一步步来实现:

步骤1:准备示例数据(如果你的DataFrame已经存在,这步可以跳过)

先构造你给出的示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Text': [
        'He codes',
        'He codes well in python',
        'Python is great language',
        'Pandas package is very handy'
    ]
})
步骤2:定义分组拆分逻辑

我们需要把每个字符串拆成单词后,每2个词合并成一个新的字符串,最后剩下的单个词就单独成一组。可以写个小函数来处理:

def pair_words(text):
    words = text.split()
    # 按步长2遍历单词列表,每2个词合并一次
    return [' '.join(words[i:i+2]) for i in range(0, len(words), 2)]
步骤3:应用函数并转换为DataFrame

把这个函数应用到Text列上,得到每个元素对应的分组列表,再把这些列表转换成新的DataFrame:

# 应用函数得到分组后的列表Series
grouped_series = df['Text'].apply(pair_words)
# 转换为DataFrame,自动补全NaN
result_df = pd.DataFrame(grouped_series.tolist(), index=df.index)
最终结果

运行完上面的代码后,result_df就是你想要的结果:

0        1         2
0   He codes     NaN       NaN
1   He codes  well in    python
2  Python is great language       NaN
3 Pandas package    is very     handy

如果你想更简洁一点,也可以把函数写成lambda表达式,一步到位:

result_df = pd.DataFrame(
    df['Text'].apply(lambda x: [' '.join(x.split()[i:i+2]) for i in range(0, len(x.split()), 2)]).tolist(),
    index=df.index
)

原理其实很简单:先用split()把字符串拆成单词列表,然后用步长为2的range来切片,每次取2个单词合并,最后把所有列表转换成DataFrame时,Pandas会自动为长度不足的行填充NaN,完美匹配你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:27:50