Skip to main content
 首页 » 编程设计

python之使用包含列表的列 reshape Pandas 数据框

2025年05月04日23davidwang456

假设我有一个如下所示的数据框:

import pandas as pd 
 
data = [{"Name" : "Project A", "Feedback" : ['we should do x', 'went well']}, 
            {"Name" : "Project B", "Feedback" : ['eat pop tarts', 'boo']}, 
            {"Name" : "Project C", "Feedback" : ['bar', 'baz']} 
            ] 
 
df = pd.DataFrame(data) 
df = df[['Name','Feedback']] 
df 
 
    Name        Feedback 
0   Project A   ['we should do x', 'went well'] 
1   Project B   ['eat pop tarts', 'boo'] 
2   Project C   ['bar', 'baz'] 

我想做的是 reshape 数据框,这样 Name 就是键,Feedback 列列表中的每个元素都是一个值,如下所示:

        Name          Feedback 
0       Project A    'we should do x'    
1       Project A    'went well' 
2       Project B    'eat pop tarts' 
3       Project B    'boo' 
4       Project C    'bar' 
5       Project C    'baz' 

执行此操作的有效方法是什么?

请您参考如下方法:

一种选择是通过展平列 Feedback 和重复列 Name 来重建数据框:

pd.DataFrame({ 
        'Name': df.Name.repeat(df.Feedback.str.len()), 
        'Feedback': [x for s in df.Feedback for x in s] 
    }) 
 
#         Feedback       Name 
#0  we should do x  Project A 
#0       went well  Project A 
#1   eat pop tarts  Project B 
#1             boo  Project B 
#2             bar  Project C 
#2             baz  Project C