【Pandas 入门-2】增加,删除与合并数据 concat, merge

这篇具有很好参考价值的文章主要介绍了【Pandas 入门-2】增加,删除与合并数据 concat, merge。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.3 增加,删除与合并数据

1.3.1 增加数据

在原数据末尾增加一列时,语法为 df[‘新列名'] = 某个值或某个元素个数与 DataFrame 列数相同的列表,例如:

df = pd.DataFrame({'姓名':['张三', '李四', '王五'], '统计学': [95, 100, 88], '高数': [82, 90, 88], '英语': [84, 89, 78]})
df['计算机'] = [92, 69, 75] # 增加一列计算机课程的成绩
df
姓名 统计学 高数 英语 计算机
0 张三 95 82 84 92
1 赵四 100 90 89 69
2 王五 88 88 78 75

在原数据末尾增加一行数据时,比较简单的方式是用 loc 函数,df.loc[行索引] = 新行值

df.loc[3] = ['马六', 65, 70, 69, 55]  # 在末尾增加一行数据
df
姓名 统计学 高数 英语 计算机
0 张三 95 82 84 92
1 赵四 100 90 89 69
2 王五 88 88 78 75
3 马六 65 70 69 55

若要在指定位置插入列,则需要用到 insert 函数。

df.insert(1, '运筹学', [61, 72, 84, 81]) # 在第 1 列后面插入新的一列
df
姓名 运筹学 统计学 高数 英语 计算机
0 张三 61 95 82 84 92
1 赵四 72 100 90 89 69
2 王五 84 88 88 78 75
3 马六 81 65 70 69 55
df.insert(3, 'Python', [81, 76, 74, 71]) # 在第 4 列后面插入新的一列
df
姓名 运筹学 统计学 Python 高数 英语 计算机
0 张三 61 95 81 82 84 92
1 赵四 72 100 76 90 89 69
2 王五 84 88 74 88 78 75
3 马六 81 65 71 70 69 55

若要在指定位置插入行,目前 Pandas 还没有专门的函数,一般采用concat函数合并多个 DataFrame 的方式,增加多列或多行数据也可以使用 concat函数或merge函数,具体参看后面的合并数据章节。

1.3.2 删除数据

Pandas 可以利用drop函数删除行数据或列数据。删除一行时,参数为行标签名以及inplace = True。若没有参数inplace = True,原始的 DataFrame 数据不变。

df.drop(3, inplace = True) # 删除第 3 行
df
姓名 运筹学 统计学 Python 高数 英语 计算机
0 张三 61 95 81 82 84 92
1 赵四 72 100 76 90 89 69
2 王五 84 88 74 88 78 75

删除一列时,多了一个参数axis = 1

df.drop('英语', inplace = True, axis = 1)
df
姓名 运筹学 统计学 Python 高数 计算机
0 张三 61 95 81 82 92
1 赵四 72 100 76 90 69
2 王五 84 88 74 88 75
df.drop(['运筹学', '高数'], inplace = True, axis = 1) # 删除两行
df
姓名 统计学 Python 计算机
0 张三 95 81 92
1 赵四 100 76 69
2 王五 88 74 75

1.3.3 合并数据

Pandas 中比较常用的两个合并数据的方法是concatmerge。 当两个 DataFrame 数据表具有完全相同的列标签时,一般用concat,其他情况下多用merge

df1 = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '统计学': [85, 68, 90], '高数': [82, 63, 88], '英语': [84, 90, 78]})
df1
姓名 统计学 高数 英语
0 张三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
df2 = pd.DataFrame({'姓名': ['马大帅', '陈小虎'], '统计学': [83, 59], '高数': [92, 70], '英语': [94, 78]})
df2
姓名 统计学 高数 英语
0 马大帅 83 92 94
1 陈小虎 59 70 78

两张表具有完全相同的行名,用concat合并的代码如下:

pd.concat([df1, df2])  #  注意中括号不等丢
姓名 统计学 高数 英语
0 张三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
0 马大帅 83 92 94
1 陈小虎 59 70 78

若要合并后的 index 重新命名,可以加参数ignore_index = True,让合并后数据的 index 重新从小到大命名:

pd.concat([df1, df2], ignore_index = True)
姓名 统计学 高数 英语
0 张三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
3 马大帅 83 92 94
4 陈小虎 59 70 78

假如有下面的数据:

df3 = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '会计': [75, 78, 80], '管理学': [94, 96, 88]})
df3
姓名 会计 管理学
0 张三 75 94
1 李四 78 96
2 王五 80 88

df1 与 df3 的姓名相同,但列名不完全相同。我们想把 df3 的列添加到 df1 中,此时就要使用merge方法了,它的使用语法一般如下:

DataFrame.merge(right, how='inner', on=None)
right 需要合并的另一个 DataFrame 数据
how 默认为 'inner',表示内连接,取两个数据表中匹配字段的交集进行合并
'outer',表示外连接,取两个数据表中匹配字段的并集进行合并
'left',表示左连接,取左边数据表中匹配字段进行合并
'right',表示右连接,取右边数据表中匹配字段进行合并
on 匹配的字段(列),可以是一个或多个

因此,对于 df1 与 df3,用merge合并时,匹配的字段(列名)为’姓名’:

df1.merge(df3, on = '姓名')
姓名 统计学 高数 英语 会计 管理学
0 张三 85 82 84 75 94
1 李四 68 63 90 78 96
2 王五 90 88 78 80 88

merge也能实现concat的合并效果,例如,合并 df1 与 df2:

df1.merge(df2, on = ['姓名', '统计学', '高数', '英语'], how = 'outer')
姓名 统计学 高数 英语
0 张三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
3 马大帅 83 92 94
4 陈小虎 59 70 78

在上面的代码中,匹配的字段为所有的列,连接方式为外连接,实现结果与concat相同。若连接方式为其他类型,显示效果如下:

df1.merge(df2, on = ['姓名', '统计学', '高数', '英语'], how = 'inner')  # 内连接时两个数据表匹配字段的交集为空
姓名 统计学 高数 英语
df1.merge(df2, on = ['姓名', '统计学', '高数', '英语'], how = 'left')  # 左连接时保留左数据表的所有匹配字段
姓名 统计学 高数 英语
0 张三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
df1.merge(df2, on = ['姓名', '统计学', '高数', '英语'], how = 'right')  # 右连接时保留右数据表的所有匹配字段
姓名 统计学 高数 英语
0 马大帅 83 92 94
1 陈小虎 59 70 78

在合并数据表时,若某些字段没有对应数据,Pandas 会自动用 NaN 替代,下面的例子展示了不同连接方式的效果。文章来源地址https://www.toymoban.com/news/detail-641160.html

df1 = pd.DataFrame({'班级': ['一班', '二班', '一班'], '姓名': ['张三', '李四', '王五'], '性别': ['男', '男', '女'], '籍贯': ['北京', '上海', '重庆']})
df1
班级 姓名 性别 籍贯
0 一班 张三 北京
1 二班 李四 上海
2 一班 王五 重庆
df2 = pd.DataFrame({ '姓名': ['张三', '陈小虎'], '统计学': [85, 59]})
df2
姓名 统计学
0 张三 85
1 陈小虎 59
df1.merge(df2, on = '姓名')
班级 姓名 性别 籍贯 统计学
0 一班 张三 北京 85
df1.merge(df2, on = '姓名', how = 'outer') # 某些字段没有对应数据,则显示为 NaN
班级 姓名 性别 籍贯 统计学
0 一班 张三 北京 85.0
1 二班 李四 上海 NaN
2 一班 王五 重庆 NaN
3 NaN 陈小虎 NaN NaN 59.0
df1.merge(df2, on = '姓名', how = 'left')
班级 姓名 性别 籍贯 统计学
0 一班 张三 北京 85.0
1 二班 李四 上海 NaN
2 一班 王五 重庆 NaN
df1.merge(df2, on = '姓名', how = 'right')
班级 姓名 性别 籍贯 统计学
0 一班 张三 北京 85
1 NaN 陈小虎 NaN NaN 59

到了这里,关于【Pandas 入门-2】增加,删除与合并数据 concat, merge的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

    目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”(来自chatGPT3.5) 4.本文将给出两种数据对齐的例子 1)dataframe类型数据和dataframe类型数据对齐(对齐NAME列); 数据对齐前的两组数据集: 数据对齐后的数据集(通过pandas.merge()函数对齐): 代码 2)

    2024年02月09日
    浏览(51)
  • Python 教学 | Pandas 数据合并(含目录文件合并案例)

    目录 Part  1前言 Part2  Pandas 数据合并函数 1  df.append() 实现数据追加 (1)向表中追加相同结构的表 (2)向表中追加不同结构的表 (3)向数据中添加一行 2  pd.concat() 实现数据连接 (1)多个相同结构数据纵向合并 (2)多个结构不同的数据纵向合并 (3)多个数据横向合并

    2024年01月17日
    浏览(59)
  • gitlab代码合并(merge request )取消 [默认删除分支(Delete source branch)] 选项

    几个人开发不同的项目,需要合并到一个共同的转测分支。 我们在开发完代码需要一起合并到另一个总分支时,提交 merge 请求会默认勾选Delete source branch选项,如下图所示: 因为每个人开发的是不同的项目,所以各个分支代码不同,假使需要合并到相同的转测分支时,而默

    2024年02月12日
    浏览(57)
  • Python Flask Web开发三:数据表的字段增加和删除

    在实际的开发中,数据表中的字段的增加和删除是很正常的操作,在运营的不断提需求下,这个修改的频率是很高的,那么在flask中如何进行字段的增加和删除呢?下面我来给大家讲讲 使用数据库迁移工具(如 Flask-Migrate等)创建一个新的迁移脚本。这个脚本将包含对数据库

    2024年02月09日
    浏览(48)
  • Python大数据之pandas快速入门(二)

    3.1 DataFrame 的行标签和列标签 1)如果所示,分别是 DataFrame 的行标签和列标签 2)获取 DataFrame 的行标签 3)获取 DataFrame 的列标签 4)设置 DataFrame 的行标签 3.2 DataFrame 的行位置编号和列位置编号 DataFrame 除了行标签和列标签之外,还具有行列位置编号。 行位置编号:从上到下

    2024年02月05日
    浏览(48)
  • 解决pandas的concat函数导致索引失效的方法

    最近在写数据的时候看到用一个concat函数进行整合,但是下面这段代码之后就碰上个很奇怪的地方 这段代码首先就是用dfs记录了每一组数据,最后使用concat函数进行连接。在这之后我希望在特定位置插入一列数据 一共有三种类型的文本,10条数据,在df格式下前面也有索引。

    2024年02月11日
    浏览(44)
  • 数据科学中的Python:NumPy和Pandas入门指南【第121篇—NumPy和Pandas】

    数据科学是当今数字时代中的一个重要领域,而Python是数据科学家们最喜爱的编程语言之一。在这篇博客中,我们将介绍Python中两个强大的库——NumPy和Pandas,它们在数据处理和分析中发挥着重要作用。 NumPy是用于科学计算的基础包,提供了高性能的多维数组对象( numpy.nda

    2024年03月15日
    浏览(96)
  • 【pandas基础】--数据拆分与合并

    数据集拆分是将一个大型的数据集拆分为多个较小的数据集,可以让数据更加清晰易懂,也方便对单个数据集进行分析和处理。 同时,分开的数据集也可以分别应用不同的数据分析方法进行处理,更加高效和专业。 数据集合并则是将多个数据集合并成一个大的数据集,可以

    2024年02月05日
    浏览(44)
  • 【数据分析入门】人工智能、数据分析和深度学习是什么关系?如何快速入门 Python Pandas?

    本文详细介绍了人工智能、数据分析和深度学习之间的关系,并就数据分析所需的Pandas库做了胎教般的入门引导。祝读得开心!   本文是原 《数据分析大全》 、现改名为 《数据分析》 专栏的第二篇,我在写这篇文章的时候突然意识到—— 单靠我是不可能把数据分析的方

    2024年02月14日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包