Pandas实现:按product列唯一单词汇总对应cost总和
解决方案
可以通过拆分单词、展开行、分组求和三步实现需求,具体代码如下:
import pandas as pd # 示例数据 data = { 'product': ['Dell Notebook I7', 'Dell Notebook I3', 'Logitech mx keys', 'Logitech mx 2'], 'cost': [1000,1200,300,100]} df_data = pd.DataFrame(data) # 1. 拆分产品描述为单词列表,新增列存储 df_words = df_data.assign(unique_words=df_data['product'].str.split()) # 2. 将单词列表展开为每行一个单词,保留对应成本 df_words = df_words.explode('unique_words') # 3. 按单词分组,计算成本总和并整理成目标格式 result_df = df_words.groupby('unique_words')['cost'].sum().reset_index() result_df.columns = ['unique_words', 'total_cost_for_unique_word'] # 查看结果 print(result_df)
代码说明
str.split()默认按空格拆分产品描述,得到每个产品的单词列表;assign用于新增列存储拆分结果explode()将列表类型的列展开,每个单词单独占一行,同时保留原行的成本值groupby('unique_words')['cost'].sum()按单词分组,累加所有包含该单词的产品成本reset_index()将分组后的索引转为普通列,最后重命名列名匹配需求
运行后输出的结果DataFrame如下:
unique_words total_cost_for_unique_word 0 2 100 1 Dell 2200 2 I3 1200 3 I7 1000 4 Logitech 400 5 mx 400 6 keys 300 7 Notebook 2200
内容的提问来源于stack exchange,提问作者Andre Nevares
相关产品推荐
相关产品推荐

