结合熊猫中的两个数据框列表

时间:2020-04-17 09:34:37

标签: python pandas

我有以下变量:

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

由于我的数据很大,所以我想知道是否有一种巧妙的方法可以做到这一点。 谢谢!

1 个答案:

答案 0 :(得分:3)

concatkeys参数一起使用,然后将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