Python pandas DataFrame数据拼接方法

作者:勤奋的大熊猫 时间:2022-11-08 08:09:36 

前言

在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了。比如我们将两个Excel表格中的数据读入,随后拼接完成后保存进一个新的Excel表格文件中。之前查找了相关的博客, 发现网络上鱼龙混杂。有些代码完全无法执行,为了提高效率,这里做一个详细地记录。

DataFrame数据拼接方法一:使用.append()方法。

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = df1.append(df2)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
  0  1
0  1  2
1  3  4
df2的值为:
  0  1
0  5  6
1  7  8
df的值为:
  0  1
0  1  2
1  3  4
0  5  6
1  7  8
"""

我们可以看到,首先我们使用了类似于list列表的操作方式,使用.append()方法对df1与df2数据进行了操作,但是需要注意的是,不同于对列表对象的操作,这里的df1仍旧为原来的df1所拥有的内容,而我们赋值的对象df才是保存了二者拼接以后的结果。 所以记得一定要单独执行赋值才可以得到正确的结果!!!其次我们看到结果其实是有些问题的,df结果中的纵向索引值为0,1,0,1,仍旧保留了我们拼接前各自的索引值,这是不被我们需要的,因此我们需要设置 ignore_index=True来对索引值进行重新排列。代码如下:

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = df1.append(df2,  ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
  0  1
0  1  2
1  3  4
df2的值为:
  0  1
0  5  6
1  7  8
df的值为:
  0  1
0  1  2
1  3  4
2  5  6
3  7  8
"""

我们可以看到,此时的纵向索引值变正常了。

注意: df1 = pd.DataFrame([[1, 2], [3, 4]])创建DataFrame类型的数据时要使用双层中括号,单层中括号会导致数据纵向排列。

DataFrame数据拼接方法二:使用.concat()方法。

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = pd.concat([df1, df2], ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
  0  1
0  1  2
1  3  4
df2的值为:
  0  1
0  5  6
1  7  8
df的值为:
  0  1
0  1  2
1  3  4
2  5  6
3  7  8
"""

我们可以看到成功实现了拼接。

但是这样并不美观,我们发现,我们的纵向index还是用0,1在表示,那么我们可不可以自定义纵向index呢?答案是可以的,请看如下代码:

import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["column1", "column2"])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["column1", "column2"])

df = pd.concat([df1, df2], ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
  column1  column2
0        1        2
1        3        4
df2的值为:
  column1  column2
0        5        6
1        7        8
df的值为:
  column1  column2
0        1        2
1        3        4
2        5        6
3        7        8
"""

至此,DataFrame的拼接问题暂时告一段落,当然还存在其他方法,以后有机会了再补充,这两种方法均为比较直观和简洁的方法。推荐使用。此外, pd.concat()函数也适用于多个DataFrame的拼接, 只要将第一个参数变为一个列表,涵盖所有的DataFrame名称即可,如[df1, df2, df3]。

补充:Python同时合并多个DataFrame

pandas的merge函数只能同时合并三个dataframe,如果涉及到合并多个dataframe就比较麻烦

这种情况下我们可以创建一个我们需要合并的列表,然后将他们一次性合并在一起

# merge any number of dataframes
from functools import reduce
df_groups = [df2, group1, group2, group3, group4, group5, group6, group7, group8]
df_merged = reduce(lambda left, right: pd.merge(left, right, on=['title']), df_groups)
df_merged.head()

来源:https://blog.csdn.net/u011699626/article/details/116406070

标签:pandas,拼接,dataframe
0
投稿

猜你喜欢

  • 讲解SQL Server安装sp4补丁报错的解决方法

    2009-04-11 17:39:00
  • Python实现微信自动好友验证,自动回复,发送群聊链接方法

    2021-10-22 00:11:23
  • MySQL的InnoDB存储引擎的数据页结构详解

    2024-01-14 01:23:27
  • MySQL安装配置方法教程

    2024-01-21 23:35:30
  • 使用已经得到的keras模型识别自己手写的数字方式

    2021-04-03 17:41:11
  • JS重现80后儿时经典拼板(模板)游戏

    2011-09-11 18:36:46
  • python实现基于两张图片生成圆角图标效果的方法

    2023-04-20 17:58:56
  • MyBatis 如何写配置文件和简单使用

    2024-01-26 08:01:18
  • SqlServer 2005 T-SQL Query 学习笔记(1)

    2024-01-25 17:01:56
  • Python3爬取英雄联盟英雄皮肤大图实例代码

    2022-05-20 23:40:55
  • python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

    2021-01-14 10:20:29
  • MySQL存储过程savepoint rollback to

    2008-12-03 16:02:00
  • numpy中的随机打乱数据方法np.random.shuffle解读

    2023-05-19 08:26:53
  • 适合Python初学者的一些编程技巧

    2022-01-14 11:19:09
  • 十行Python3代码实现去除pdf文件水印

    2022-02-27 10:50:15
  • Python 点击指定位置验证码破解的实现代码

    2022-07-15 11:17:58
  • 详解Python中的分支和循环结构

    2023-07-19 11:56:21
  • ASP脚本变量、函数、过程和条件语句

    2008-10-14 14:43:00
  • Golang中的sync.WaitGroup用法实例

    2023-08-31 03:57:28
  • keras中epoch,batch,loss,val_loss用法说明

    2021-08-11 10:56:30
  • asp之家 网络编程 m.aspxhome.com