Python 在公共索引上连接数据帧
我目前正在编写一个程序,有两个数据帧,按字符串索引,格式如下:Python 在公共索引上连接数据帧,python,pandas,dataframe,concat,Python,Pandas,Dataframe,Concat,我目前正在编写一个程序,有两个数据帧,按字符串索引,格式如下: col1 col2 col3 col4 row1 65 24 47 35 row2 33 48 25 89 row3 65 34 67 34 row4 24 12 52 17 及 并希望将这些帧合并/连接/连接成如下所示的内容: col1 col
col1 col2 col3 col4
row1 65 24 47 35
row2 33 48 25 89
row3 65 34 67 34
row4 24 12 52 17
及
并希望将这些帧合并/连接/连接成如下所示的内容:
col1 col2 col3 col4 col5 col6
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
col1 col2 col3 col4 col5 col6
row1 65 24 47 35
row2 33 48 25 89
row3 65 34 67 34
row4 24 12 52 17
row1 81 58
row2 25 36
row3 67 70
row4 52 82
对于我尝试过的每一种方法,在阅读了Pandas关于合并/连接/连接的文档之后,我都无法找到一种在没有重复行索引的情况下执行这种合并的方法,通常操作会产生如下结果:
col1 col2 col3 col4 col5 col6
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
col1 col2 col3 col4 col5 col6
row1 65 24 47 35
row2 33 48 25 89
row3 65 34 67 34
row4 24 12 52 17
row1 81 58
row2 25 36
row3 67 70
row4 52 82
但是,这不是我想要的数据格式。
执行合并的最有效方法是什么,以便将具有相同索引的值合并在一起?请注意,在某些情况下,数据帧的尺寸也可能不同。pd.concat
沿第一个轴
如果索引有问题,可以添加一个参数ignore\u index=True
:
df = pd.concat([df1, df2], 1, ignore_index=True)
df
0 1 2 3 4 5
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
DataFrame.align
另一种选择,
df3, df4 = df1.align(df2)
df3.fillna(0) + df4.fillna(0)
col1 col2 col3 col4 col5 col6
row1 65.0 24.0 47.0 35.0 81.0 58.0
row2 33.0 48.0 25.0 89.0 25.0 36.0
row3 65.0 34.0 67.0 34.0 67.0 70.0
row4 24.0 12.0 52.0 17.0 52.0 82.0
让我们看看你试过什么。这是一个简单的水平合并:
pd.concat([df1,df2],axis=1)
;我得到以下错误:ValueError:传递值的形状是(8,35),索引暗示(8,34)concat应该可以工作,但我认为我遇到了一个错误,因为我试图合并两个形状/大小不等的数据帧。使用pd.concat会产生以下错误:ValueError:传递值的形状是(8,35),索引暗示(8,34)可能是我的索引有问题?奇怪的是,数据帧是由strings@ice_cream试试这个:df1,df2=df1.align(df2);df=df1+df2
@雪糕等等,我需要给你那行的一个修改版本。@ice雪糕所有的列都是数字吗?如果是,您可以这样做:df3,df4=df1.align(df2);df=df3.fillna(0)+df4.fillna(0)
列也通过字符串索引