Pandas——⑥合并数据(concat)

本文详细介绍了Pandas库中的数据合并操作,包括使用concat函数进行竖向和横向合并,设置ignore_index重置索引,以及不同join模式的运用,如'inner'和'outer',展示了如何通过append方法添加数据。
部署运行你感兴趣的模型镜像

Pandas——合并数据(concat)

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

目录

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

输出:

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用Pandas进行数据预处理和合数据 #### 数据预处理概述 数据预处理是数据分析和机器学习流程中的核心部分之一,能够显著提升模型性能。通过使用Pandas库,可以实现高效的数据清洗、转换和其他必要的准备工作[^1]。 #### 安装Pandas 如果尚未安装Pandas库,可以通过以下命令完成安装: ```bash pip install pandas ``` 此命令会下载安装最新版本的Pandas及其依赖项[^2]。 --- #### 常见数据预处理操作 ##### 1. 缺失值处理 缺失值可能会影响分析结果的质量,因此需要对其进行适当处理。以下是几种常见的方法: - **删除含有缺失值的行** ```python import pandas as pd df = pd.DataFrame({ 'A': [1, 2, None], 'B': [4, None, 6] }) # 删除任何包含NaN的行 cleaned_df = df.dropna() print(cleaned_df) ``` 上述代码展示了如何移除存在缺失值的记录[^3]。 - **填充缺失值** ```python # 将缺失值替换为指定数值或其他逻辑计算的结果 filled_df = df.fillna(0) print(filled_df) ``` 这里展示了一种简单的方式——用零替代所有缺失值。 --- ##### 2. 数据类型转换 确保每列具有正确的数据类型对于后续运算至关重要。 ```python # 转换特定列为整数型 df['A'] = df['A'].astype('int') print(df.dtypes) ``` 这段脚本说明了如何改变某一列的数据类型至整数形式。 --- #### 合数据集 当多个数据表之间存在某种关系时,通常需要将其组合起来形成单一视图。下面列举了几种常用的合技术。 ##### 1. 利用`merge()`函数按键连接两个表格 假设我们有两个DataFrame对象分别代表学生基本信息与成绩详情,则可通过共同字段来建立联系。 ```python students_info = pd.DataFrame({ 'student_id': ['S001', 'S002'], 'name': ['Alice', 'Bob'] }) grades = pd.DataFrame({ 'student_id': ['S001', 'S002'], 'grade': [85, 90] }) merged_data = students_info.merge(grades, on='student_id') print(merged_data) ``` 此处演示的是基于共享键(student_id)执行内部联接的过程[^4]。 ##### 2. 拼接多张水平方向上的表格 有时我们需要把几组相似但独立的信息拼接到一起构成更宽广的形式。 ```python dataframe_1 = pd.DataFrame({'col1': [1], 'col2': [2]}) dataframe_2 = pd.DataFrame({'col1': [3], 'col2': [4]}) combined_horizontal = pd.concat([dataframe_1, dataframe_2], axis=1) print(combined_horizontal) ``` 以上例子体现了沿着列轴堆叠两份资料的方法。 --- #### 总结 借助于强大的功能集合,Pandas让开发者得以快速有效地应对各种复杂场景下的数据准备需求。无论是基础层面还是高级技巧上都有广泛适用性[^2].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值