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


猜你喜欢
- 本文实例讲述了pytorch制作自己的LMDB数据操作。分享给大家供大家参考,具体如下:前言记录下pytorch里如何使用lmdb的code
- 读取十万多条文本写入SQLite类型数据库,由于文本中存在中文字符,插入到数据库没错,取出时一直是UnicodeDecodeError,导致
- 实例如下所示:from tensorflow.python import pywrap_tensorflowcheckpoint_path
- 在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效。seaborn官方文档见链接:http://seaborn.py
- 本文实例讲述了JS实现json数组排序操作。分享给大家供大家参考,具体如下:有时需要根据json对象的某个属性排序json数组,javasc
- 1.基本结构 create OR REPLACE PROCEDURE存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBE
- 最近在使用tensorflow进行网络训练的时候,需要提取出别人训练好的卷积核的部分层的数据。由于tensorflow中的tensor和py
- 这段时间常给来面试的同学用《 你是一个职业的页面重构工作者吗? 》中三个部分的不同阶段去做自测,发现很多人都自我感觉良好,给我的回答基本都是
- 这个concatenate用于将矩阵合并,他将沿着已经存在的轴合并一个矩阵,相关参数有(a1, a2, ...), axis=0, out=
- 本文实例讲述了Python实现识别图片内容的方法。分享给大家供大家参考,具体如下:python识别图片内容。这里我的环境为windows64
- 建议先看vue瀑布流组件上拉加载更多再来食用本文,如果直接想看源码文末就是~文末新增组件优化,之所以没有删优化前的代码是想让以后自己还能看到
- 前言我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会
- 生产定制一个彩条标签。首先导入:import matplotlib.pyplot as pltimport numpy as npfrom
- 目录前言super的用法super的原理Python super()使用注意事项混用super与显式类调用不同种类的参数总结前言Python
- 一、前言前几天需要划分数据集,就写了一个小demo去完成这个任务。随机划分图片数据集任务描述:我的所有图片保存在同一个文件夹里,需要随机将图
- 一、激活函数定义激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重
- 效果图:代码如下:<!DOCTYPE html><html><head> <meta
- 工作中常常会创建一个函数来解决一些需求问题,以下是个人在工作中总结出来的创建函数20种方式,你知道多少?function sayHello(
- 随着互联网的普及和发展,越来越多的人开始关注个人博客。个人博客是一个非常好的平台,可以让人们分享自己的知识和经验,也可以让人们交流和互动。在
- 最近在玩一个叫Baba is you的游戏,很羡慕里面的一个转场特效,所以试着做了一下。主要使用了JS和CSS,特效主要是用CSS实现的。H