Python pandas :垂直和水平连接 [英] Python pandas: concat vertical and horizontal
本文介绍了Python pandas :垂直和水平连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试水平连接两个数据框.对于df1中的每个观察结果,df2包含2个结果变量.
I am trying to concat two dataframe, horizontally. df2 contains 2 result variables for every observation in df1.
df1.shape
(242583, 172)
df2.shape
(242583, 2)
我的代码是:
Fin = pd.concat([df1, df2], axis= 1)
但是以某种方式将结果堆叠在两个维度中:
But somehow the result is stacked in 2 dimensions:
Fin.shape
(485166, 174)
我在这里想念什么?
推荐答案
索引值不同,因此索引未对齐并得到NaN
s:
There are different index values, so indexes are not aligned and get NaN
s:
df1 = pd.DataFrame({
'A': ['a','a','a'],
'B': range(3)
})
print (df1)
A B
0 a 0
1 a 1
2 a 2
df2 = pd.DataFrame({
'C': ['b','b','b'],
'D': range(4,7)
}, index=[5,7,8])
print (df2)
C D
5 b 4
7 b 5
8 b 6
Fin = pd.concat([df1, df2], axis= 1)
print (Fin)
A B C D
0 a 0.0 NaN NaN
1 a 1.0 NaN NaN
2 a 2.0 NaN NaN
5 NaN NaN b 4.0
7 NaN NaN b 5.0
8 NaN NaN b 6.0
一种可能的解决方案是创建默认索引:
One possible solution is create default indexes:
Fin = pd.concat([df1.reset_index(drop=True), df2.reset_index(drop=True)], axis= 1)
print (Fin)
A B C D
0 a 0 b 4
1 a 1 b 5
2 a 2 b 6
或分配:
df2.index = df1.index
Fin = pd.concat([df1, df2], axis= 1)
print (Fin)
A B C D
0 a 0 b 4
1 a 1 b 5
2 a 2 b 6
df1.index = df2.index
Fin = pd.concat([df1, df2], axis= 1)
print (Fin)
A B C D
5 a 0 b 4
7 a 1 b 5
8 a 2 b 6
这篇关于Python pandas :垂直和水平连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文