目录
一、使用concat函数
二、concat:join
三、concat:join_axes
四、append
axis=0 竖向合并、 axis=1 横向合并
ignore_index=True 让横向索引自动重拍
import pandas as pd
import numpy as np
# 使用的函数 concatenating
# 1. concat
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)
print(df2)
print(df3)
# axis=0 竖向合并、 axis=1 横向合并
res_1 = pd.concat([df1, df2, df3], axis=0)
print(res_1)
# 让横向索引自动重拍
res_2 = pd.concat([df1, df2, df3], axis=0, ignore_index=True)
print(res_2)
print('\n')
输出:
有两种模式:['inner', 'outter'],默认情况下的模式是 join=‘outer’
join=‘outer’:没有的行列自动填充NaN
join=‘inner’:没有的列裁剪掉,只保留数据中共有的部分
import pandas as pd
import numpy as np
# 2. concat:join, ['inner', 'outter']
# 给出的数据的行列标号有部分重合部分不重合
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)
print(df2)
# 默认情况下的模式是 join=‘outer’
res1 = pd.concat([df1, df2], axis=0)
print(res1)
# join=‘outer’:没有的行列自动填充NaN
res2 = pd.concat([df1, df2], axis=0, join='outer')
print(res2)
# join=‘inner’:没有的列裁剪掉,只保留数据中共有的部分
res3 = pd.concat([df1, df2], axis=0, join='inner', ignore_index=True)
print(res3)
print('\n')
输出:
import pandas as pd
import numpy as np
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])
# 将df1、df2左右合并, 并且按照df1的index进行合并,df2中如果没有则填充NaN,并且忽略掉df2中有而df1中没有的行
res = pd.concat([df1, df2], axis=1, join_axes=[df1.index])
print(res)
print('\n')
输出:
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=['b', 'c', 'd', 'e'], index=[2,3,4])
print(df1)
print(df2)
print(df3)
# 以df1为基础进行append
res1 = df1.append([df2,df2], ignore_index=True)
print(res1)
# 用Series模拟每次添加一行数据
tempData = pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd'])
res2 = df1.append(tempData, ignore_index=True)
print(res2)
输出: