Pandas——⑥合并数据(concat)

本文详细介绍了Pandas库中的数据合并操作,包括使用concat函数进行竖向和横向合并,设置ignore_index重置索引,以及不同join模式的运用,如'inner'和'outer',展示了如何通过append方法添加数据。
摘要由CSDN通过智能技术生成

Pandas——合并数据(concat)

python入门常用操作:Python从0到1_python 把0到1等分为1000个元素-CSDN博客

目录

一、使用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')

输出:

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

输出:

三、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)

输出:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值