我有以下变量:
info_list = [("class1", "student1"), ("class1", "student2"), ("class2", "student1")]
dataframe_list = [df1, df2, df3]
每个dfN
如下所示:
df1:
A B
10 20
23 31
df2:
A B
2 9
11 51
60 89
df3:
A B
1 2
3 9
我想将第n个info_list元素与dataframe_list的第n个数据帧匹配,然后将数据帧连接为一个。 以下是我想要的数据框:
class student A B
class1 student1 10 20
class1 student1 23 31
class1 student2 2 9
class1 student2 11 51
class1 student2 60 89
class2 student1 1 2
class2 student1 3 9
由于我的数据很大,所以我想知道是否有一种巧妙的方法可以做到这一点。 谢谢!
答案 0 :(得分:3)
将concat
与keys
参数一起使用,然后将MultiIndex
转换为具有重命名索引名称的列:
df = (pd.concat(dataframe_list, keys=info_list)
.reset_index(level=2, drop=True)
.rename_axis(('class','student'))
.reset_index())
print (df)
class student A B
0 class1 student1 10 20
1 class1 student1 23 31
2 class1 student2 2 9
3 class1 student2 11 51
4 class1 student2 60 89
5 class2 student1 1 2
6 class2 student1 3 9