Python之pandas学习【6】:合并两个pandas(concat)

注意看代码注释和运行结果,其实自己跑一遍什么都明白了。

一. 代码

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])
print(df1,'\n')
print(df2,'\n')
print(df3,'\n')


# 上下合并DataFrame,concat方式
res = pd.concat([df1,df2,df3],axis=0,ignore_index=True) # 纵向合并,1是横向合并,最后一个参数就是放弃之前的索引,重新建立索引
print(res,'\n')


# join,【‘inner','outer']
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])
print(df1,'\n')
print(df2,'\n')
res = pd.concat([df1,df2],axis=0)
print(res,'\n')
res1 = pd.concat([df1,df2],join='inner',ignore_index=True) # 默认是outer。inner就是只考虑两者都有的部分
print(res1,'\n')


# join_axes
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])
res = pd.concat([df1,df2],axis=1) # 默认考虑两个矩阵的行和列
print(res,'\n')
res1 = pd.concat([df1,df2],axis=1,join_axes=[df1.index]) # 给定之后,就只考虑哪一个
print(res1,'\n')


# append,也可横向竖向
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'],index=[2,3,4])
res = df1.append(df2,ignore_index=True)
print(res,'\n')
res = df1.append([df2,df3])
print(res,'\n')
s1 = pd.Series([1,2,3,4],index=['a','b','c','d']) # 只添加一个横条
res = df1.append(s1,ignore_index=True)
print(res,'\n')

二. 运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值