如何为DataFrame添加多值列并按值数量重复对应行?
解决方案
步骤1:整理数据为字典
先把按名称分类的对象列表整理成字典,方便根据名字快速匹配对应的物品:
picks_dict = { 'Jimmy': ['chair','table','pencil'], 'Charles': ['smartphone','cake'], 'John': ['clock','paper'] }
步骤2:初始化原始DataFrame
假设你的原始DataFrame是用pandas创建的,代码如下:
import pandas as pd df = pd.DataFrame({ 'id': [1, 2, 3], 'name': ['Jimmy', 'Charles', 'John'] })
步骤3:用循环生成目标结果
通过两层循环遍历原始数据和对应物品列表,构建结果记录后转成新的DataFrame:
# 初始化空列表存储结果行 result_rows = [] # 遍历原始DataFrame的每一行 for _, row in df.iterrows(): user_id = row['id'] user_name = row['name'] # 获取当前用户的所有物品 items = picks_dict[user_name] # 为每个物品生成一条对应记录 for item in items: result_rows.append({ 'id': user_id, 'name': user_name, 'picks': item }) # 转换为目标DataFrame result_df = pd.DataFrame(result_rows) print(result_df)
执行后得到的结果即为你需要的展开表格:
| id | name | picks |
|---|---|---|
| 1 | Jimmy | chair |
| 1 | Jimmy | table |
| 1 | Jimmy | pencil |
| 2 | Charles | smartphone |
| 2 | Charles | cake |
| 3 | John | clock |
| 3 | John | paper |
内容的提问来源于stack exchange,提问作者Jimmy Auris
相关产品推荐
相关产品推荐

