Pandas——⑥合并数据(concat)

Pandas——合并数据(concat)

python入门常用操作:https://blog.csdn.net/qq_33302004/article/details/112859327

目录

一、使用concat函数

二、concat:join

三、concat:join_axes

四、append


一、使用concat函数

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')

输出:

Pandas——⑥合并数据(concat)_第1张图片

二、concat:join

有两种模式:['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')

输出:

Pandas——⑥合并数据(concat)_第2张图片

三、concat:join_axes

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')

输出:

四、append

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)

输出:

Pandas——⑥合并数据(concat)_第3张图片

你可能感兴趣的:(python,python,pandas,concat,append,join)