首页 > 解决方案 > 如何连接具有不相等行数和不同列名的数据框

问题描述

我正在尝试连接具有不相等行数和不同列名的四个数据框。在这里,我放置我的代码并输出我得到的内容。

import pandas as pd

data1 = pd.DataFrame({'Col':[33,44,55,67], 'Col1':[44,55,55,555]})
data2 = pd.DataFrame({'Col2':[33,44], 'Col3':[22,22]})
data3 = pd.DataFrame({'Col4':[33,44,44], 'Col5':[22,22,44]})
data4 = pd.DataFrame({'Col6':[33], 'Col7':[22], 'Col8':[44]})


data5 = pd.concat([data1, data2, data3, data4])
data5

这是我的实际输出

在此处输入图像描述

我期待的是:

在此处输入图像描述

提前致谢

标签: pythonpandasdataframe

解决方案


您可以使用concatwith axis=1,但首先重复匹配最大行长度的值:

dfs = [data1, data2, data3, data4]

maxlen = len(max(dfs, key=len))
print (maxlen)
4

dfs = [pd.concat([x] * int(np.ceil(maxlen / len(x))), ignore_index=True).iloc[:maxlen] 
       for x in dfs]
data5 = pd.concat(dfs, axis=1)

print (data5)
   Col  Col1  Col2  Col3  Col4  Col5  Col6  Col7  Col8
0   33    44    33    22    33    22    33    22    44
1   44    55    44    22    44    22    33    22    44
2   55    55    33    22    44    44    33    22    44
3   67   555    44    22    33    22    33    22    44

推荐阅读