如何重塑Pandas DataFrame,按transaction列展示对应clean_words
解决方案
你之前用pivot_table的方式会把clean_words作为索引,导致重复词汇被合并,结构也不符合预期。要实现将transaction作为列、对应clean_words按行展示的效果,可按以下步骤操作:
步骤1:为每个transaction内的词汇添加行号
通过分组并生成累计计数,给每个transaction里的词汇分配唯一的行位置,确保后续重塑时词汇能按原有顺序排列:
import pandas as pd data = {'clean_words':['good','evening','how','are','you','how','can','i','help'], 'start_time':[1900,2100,2500,2750,2900,1500,1650,1770,1800], 'end_time':[2100,2500,2750,2900,3000,1650,1770,1800,1950], 'transaction':[1,1,1,1,1,2,2,2,2]} df = pd.DataFrame(data) # 为每个transaction分组内的词汇添加行号 df['row_id'] = df.groupby('transaction')['clean_words'].cumcount()
步骤2:重塑DataFrame
使用pivot方法,以行号为索引,transaction为列,提取clean_words作为对应值:
result = df.pivot(index='row_id', columns='transaction', values='clean_words') print(result)
执行后得到的结果如下:
transaction 1 2 row_id 0 good how 1 evening can 2 how i 3 are help 4 you NaN
该结果完全匹配需求:transaction 1列展示对应的5个词汇,transaction 2列展示对应的4个词汇,长度不足的位置自动填充NaN。
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

