Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何连接具有不等行数和不同列名的数据帧_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何连接具有不等行数和不同列名的数据帧

Python 如何连接具有不等行数和不同列名的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我试图用不相等的行数和不同的列名连接四个数据帧。在这里,我放置我的代码并输出我得到的东西 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]}) d

我试图用不相等的行数和不同的列名连接四个数据帧。在这里,我放置我的代码并输出我得到的东西

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
这是我的实际输出

我期待的是:

提前感谢

您可以使用轴=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

如果给定的行数不同,您期望的输出大小是多少?所有的最大值?你能描述一下你试图解决的问题吗?我得到的错误是“str”对象没有属性concate。因为在我的原始数据框中,文本是成行的。如何克服这个问题error@SuneelKumar-hmm,我认为问题不在于
文本
,尝试更改样本数据并正常工作。@SuneelKumar-是否在
dfs
列表
数据帧
?是的,工作正常。这是我的错误,因为我写的是p.concat而不是pd。concat@SuneelKumar-太好了!