Python 垂直合并2个数据帧
我有两个数据帧,每个数据帧有两列(相同的列名)。我想垂直合并它们,最终得到一个新的数据帧 当做Python 垂直合并2个数据帧,python,pandas,merge,Python,Pandas,Merge,我有两个数据帧,每个数据帧有两列(相同的列名)。我想垂直合并它们,最终得到一个新的数据帧 当做 newdf = df.merge(df1,how='left',on=['Col1','Col2']) 新df只有df中的行,而df1中的行都没有。为什么会发生这种情况 Col1 Col2 asd 1232 cac 2324 ..... 而df1是: Col1 Col2 afaf 1213 asas 4353 新数据帧newdf应为: Col1 Col
newdf = df.merge(df1,how='left',on=['Col1','Col2'])
新df只有df
中的行,而df1
中的行都没有。为什么会发生这种情况
Col1 Col2
asd 1232
cac 2324
.....
而df1
是:
Col1 Col2
afaf 1213
asas 4353
新数据帧newdf
应为:
Col1 Col2
asd 1232
cac 2324
afaf 1213
asas 4353
如果不想按原样使用索引值,可以使用
append
和ignore\u index
In [14]: df1.append(df2)
Out[14]:
Col1 Col2
0 asd 1232
1 cac 2324
0 afaf 1213
1 asas 4353
In [15]: df1.append(df2, ignore_index=True)
Out[15]:
Col1 Col2
0 asd 1232
1 cac 2324
2 afaf 1213
3 asas 4353
或者使用pd.concat
In [16]: pd.concat([df1, df2])
Out[16]:
Col1 Col2
0 asd 1232
1 cac 2324
0 afaf 1213
1 asas 4353
In [17]: pd.concat([df1, df2], ignore_index=True)
Out[17]:
Col1 Col2
0 asd 1232
1 cac 2324
2 afaf 1213
3 asas 4353
您想要
pd.concat([df1,df2])
,这是一个非常常见的问题,请参阅,相关:我忘了提到concat返回:TypeError:第一个参数必须是pandas对象的iterable,您传递了一个“DataFrame”类型的对象当您传递how='left'
时,这只会水平合并lhs上那些列中的值,不清楚您真正想要的是什么。您可以尝试传递“外部”附加所需的时间比合并所需的时间短。如果我想垂直合并2个以上的数据帧,我还可以使用这个吗?