Pandas 6 合并 concatenating
合并两个dataframe,横向纵向均可以
concatenating
import pandas as pd
import numpy as np
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'])
通常数据合并时上下合并,因为三个的属性一样,合并的方法
res=pd.concat([df1,df2,df3],axis=0)
axis=0时竖向合并,1时横向合并
print(pd.concat([df1,df2,df3],axis=0))
此时会出现索引值时重复的数据,如下图。ignore_index=True,即忽略掉原有的索引的顺序
print(pd.concat([df1,df2,df3],axis=0,ignore_index=True))
method2 cocatenating中的join功能
- join有两种形式,inner和outer
- join,['inner','outer']
df4 = pd.DataFrame(np.ones((3,4))*0,index=[1,2,3],columns=['a','b','c','d'])
df5 = pd.DataFrame(np.ones((3,4))*1,index=[2,3,4],columns=['b','c','d','e'])
print(df4)
print(df5)
join功能把不一样的东西处理一下
res = pd.concat([df4,df5],axis=0)
print(res)
此时默认的是outer模式,改成inner
print(pd.concat([df4,df5],axis=0,join='inner'))
再处理序号
print(pd.concat([df4,df5],axis=0,join='inner',ignore_index=True))
concat属性有很多,还有merge,也是进行数据的合并,交叉处理
join_axes:
print(pd.concat([df4,df5],axis=1,join_axes=[df4.index]))
axis=1 左右合并 axis=0:上下合并;此时出现矛盾
print(pd.concat([df4,df5],axis=1))
此时的输出数据保留全部的索引值
append 默认竖向加数据
自己可以只当数据的方向
df4是主要的数据,现在把df5的数据加在df4的后面
print('---------------------------------')
print(df4.append(df5,ignore_index=True))
append不止一个时候,只需要加入一个列表,把他们都囊括进去,df5-->[df5,df6]即可,就是把df5,df6append到df4的下面
print('---------------------------------')
print(df4.append([df5,df3],ignore_index=True))
print('---------------------------------')
dateframe中添加一行数据,办法是:dataframe下面添加一个series
df6 = pd.Series([1,2,3,4],index=['a','b','c','d'])
print(df4.append(df6,ignore_index=True))
此时不用加入axis=0
输出结果在最后一行加入一个数据行



网友评论