pandas 在Python中通过索引连接 Dataframe 列表

jmp7cifd  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(104)

我有一个问题想请教你,希望你能帮我解答。我被卡住了,不能让它工作。我有一个3个list-DataFrames(3X 5)的列表,如下所示:

[[df1, df2, df3, df4, df5],
 [df11, df12, df13, df14, df15],
 [df21, df22, df23, df24, df25]]

我想实现的是根据列表索引将DataFrame连接到一个列表DataFrame(即dfs)中:

dfs = [dfs1, dfs2, dfs3, dfs4, dfs5]

dfs1 = pd.concat([df1, df11, df21])
dfs2 = pd.concat([df2, df12, df22])
dfs3 = pd.concat([df3, df13, df23])   
dfs4 = pd.concat([df4, df14, df24])
dfs5 = pd.concat([df5, df15, df25])

任何建议都很感激。谢谢你!

3qpi33ja

3qpi33ja1#

您可以使用zip并将连接的 Dataframe 存储到一个包含5个元素的列表中

lst = [[df1, df2, df3, df4, df5],
       [df11, df12, df13, df14, df15],
       [df21, df22, df23, df24, df25]]
dfs = [pd.concat(x) for x in zip(*lst)]
>>> len(dfs)
5

>>> dfs[0]
    0   1   2
0  16  14  13  # <- df1
1  18  17  12
2  12  13  16
3  11  16  17
4  11  18  17
0  18  13  12  # <- df11
1  14  18  12
2  11  17  13
3  17  18  15
4  18  18  12
0  16  13  15  # <- df21
1  16  11  18
2  12  18  15
3  16  14  14
4  17  12  11

>>> dfs[4]
    0   1   2
0  52  54  54  # <- df5
1  52  53  57
2  56  51  53
3  54  58  52
4  57  51  51
0  51  58  58  # <- df15
1  57  54  56
2  56  58  58
3  53  55  56
4  53  56  53
0  51  53  54  # <- df25
1  52  55  58
2  52  54  56
3  58  54  56
4  52  58  56

注意:如果你需要沿着索引轴连接,使用pd.concat(..., axis=1)来获得宽数据框架而不是长数据框架。
最小可重现示例:

lst = [[pd.DataFrame(np.random.randint(1+i*10, 9+i*10, (5, 3)))
        for i in range(1, 6)] for j in range(0, 3)]

相关问题