python - 如何连接具有不相等行数和不同列名的数据框
问题描述
我正在尝试连接具有不相等行数和不同列名的四个数据框。在这里,我放置我的代码并输出我得到的内容。
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
这是我的实际输出
我期待的是:
提前致谢
解决方案
您可以使用concat
with 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
推荐阅读
- vba - 有没有办法让宏删除某种类型的所有段落?
- laravel - 如何通过公共 URL 从存储中获取文件?
- azure - 新的 ms botbuilder 直线语音是否适合呼叫中心场景?
- c++ - 在 Mac OS 上使用 OpenGL 4.1 损坏的纹理
- paypal - 使用 Polymer 和 Shadow-DOM 无法在我的电子商务网站上集成 Paypal Checkout
- python-3.x - 循环插入数字到列表时,Python插值问题
- opencart - 当我登录网站时,Opencart 出现空车问题
- python - 实体 3-D 体素立方体的分割
- linux - 如何在linux中的某些特定标签后替换单词
- ios - Xcode 测试记录已禁用,提示“至少应选择一项测试”