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

Pandas按URL分组,将行中word转为多列的实现需求

解决DataFrame按URL分组并拆分Word为多列的问题

刚好碰到过类似的需求,我来给你一步步实现这个效果。首先我们明确目标:把同一个url对应的多个word值拆分成独立的列,比如/refrigerators对应的三个word要变成word、word1、word2三列。

步骤1:准备示例数据

先把你给出的示例DataFrame创建出来:

import pandas as pd

df2 = pd.DataFrame({
    'url': ['/pool','/refrigerators','/refrigerators','/refrigerators','/joss-and-main','/furniture','/entertainment-centers-and-tv-stands'], 
    'word': ['pool','refrigerator','fridge','cooler','joss and main','furniture','tv stand']
})

步骤2:给每个组内的Word添加序号

我们需要给每个url分组里的word标记顺序,这样后续才能把它们转成不同的列:

# 给每个url组内的word分配从0开始的序号
df2['col_idx'] = df2.groupby('url').cumcount()

这一步之后,每个word都会有一个组内的索引,比如/refrigerators下的三个word对应的col_idx分别是0、1、2。

步骤3:重塑数据生成多列

用pivot方法把行转成列,然后调整列名让它符合你的需求:

# 重塑数据,将col_idx转为列
result = df2.pivot(index='url', columns='col_idx', values='word').reset_index()

# 重命名列:第一列是Url,后续列依次是word、word1、word2...
result.columns = ['Url'] + [f'word{i}' if i > 0 else 'word' for i in result.columns[1:]]

步骤4:处理空值(可选)

如果有些url只有一个word,其他列会显示NaN,我们可以把这些空值换成空字符串让输出更整洁:

result = result.fillna('')

最终输出

运行完上面的代码后,result就是你想要的格式了,输出如下:

Urlwordword1word2
/poolpool
/refrigeratorsrefrigeratorfridgecooler
/joss-and-mainjoss and main
/furniturefurniture
/entertainment-centers-and-tv-standstv stand

这个方法的好处是不管每个url下有多少个word,都能自动生成对应的列,扩展性很强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:32:59