假设我有一个如下所示的数据框:
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
