Pandas DataFrame实现任意位置插入一列或一行

 更新时间:2023年08月29日 14:38:07   作者:盛夏光年ltk  
Pandas是Python中最流行的数据处理和分析库之一,在数据分析过程中,有时候需要在Dataframe中插入新的数据列,本文主要介绍了Pandas DataFrame实现任意位置插入一列或一行,具有一定的参考价值,感兴趣的可以了解一下

新建DataFrame

import numpy as np
import pandas as pd
arr = [11, 12, 13, 21, 22, 23, 31, 32, 33, 41, 42, 43]
# 转化为4行3列的numpy数组
np_arr = np.array(arr).reshape((4, 3))
# 转化为DataFrame
pd_arr = pd.DataFrame(np_arr)

结果:

012
0111213
1212223
2313233
3414243

插入一列

任意位置插入一列比较简单,用自带的pd.insert即可实现

# 待插入列索引
col_n = 1
# 待插入数据,以一维列表为例
d = ["*"] * 4
# 参数:添加列索引,添加列名,添加数据,是否允许列名重复
pd_arr.insert(col_n, "*", d, allow_duplicates=False)

结果:

0*12
011*1213
121*2223
231*3233
341*4243

插入一行

任意位置插入一行时自带的pd.append无法实现(append只能在最后添加一行),需要先将原DataFrame拆分,添加新数据后再组合

# 待插入行索引
row_n = 1
# 待插入数据,以一维列表为例
d = [["*"] * 4]
# 拆分
pd_arr1 = [:row_n]
pd_arr2 = [row_n:]
# 参数:添加数据,是否无视行索引
pd_arr = pd_arr1.append(d, ignore_index=True).append(pd_arr2, ignore_index=True)

结果:

0*12
011*1213
1****
221*2223
331*3233
441*4243

可以将这几行代码整理成一个方法,以便于重复调用,如(以添加一维列表为例):

def df_insert(df, n, arr, ignore_index=True):
	"""
	DataFrame任意位置添加一行
	:param df: DataFrame
	:param n: 添加行号索引
	:param arr: 添加数据
	:param ignore_index: 是否无视行索引,为True则重新从0生成df的行号
	:return: DataFrame
	"""
	# 如果原df列名被修改,则需要给新插入的行也赋予列名
	# arr = pd.DataFrame(np.array(arr).reshape((1, len(arr))), columns=df.columns)
	# 否则直接插入二维数组即可
	arr = [arr]
	df1 = df[:n]
	df2 = df[n:]
	df0 = df1.append(arr, ignore_index).append(df2, ignore_index)
	return df0
# 待插入行索引
row_n = 1
# 待插入数据,以一维列表为例
d = ["*"] * 4
# 调用方法
pd_arr = df_insert(pd_arr, row_n, d)

补充

用yield迭代DataFrame时插入新的行,迭代结果不受影响

def df_yield(df):
	# index=True时返回结果Pandas类型数据中将带Index
	# 即 Pandas(Index=*, column_name=*, ...)
	for row in df.itertuples(index=False):
		yield row
y = df_yield(df_arr)
# 用try except StopIteration判断迭代结束
y0 = next(y)
print("index 0 ", y0)
# index 0 插入新的数据
pd_arr = pd_insert(pd_arr, 0, ["*"] * 3)
y1 = next(y)
print("index 1 ", y1)

结果:

index 0 Pandas(_0=11, _1=12, _2=13)
index 1 Pandas(_0=21, _1=22, _2=23)

没有受到新插入数据的影响

到此这篇关于Pandas DataFrame实现任意位置插入一列或一行的文章就介绍到这了,更多相关Pandas DataFrame任意位置插入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python hashlib常见摘要算法详解

    Python hashlib常见摘要算法详解

    这篇文章主要介绍了Python hashlib常见摘要算法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • pycharm通过anaconda安装pyqt5的教程

    pycharm通过anaconda安装pyqt5的教程

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,这篇文章主要介绍了pycharm通过anaconda来安装pyqt5的教程,需要的朋友可以参考下
    2020-03-03
  • 从基础到高级详解Python中HTTP请求处理实战指南

    从基础到高级详解Python中HTTP请求处理实战指南

    HTTP 是互联网数据通信的基石,它定义了客户端(如浏览器或 Python 脚本)如何与服务器进行交互,下面小编就带大家深入了解一下Python中HTTP请求处理的相关知识吧
    2026-02-02
  • Python Missingno 数据缺失值可视化利器案例详解

    Python Missingno 数据缺失值可视化利器案例详解

    数据分析中数据缺失是常见问题,missingno库通过矩阵图、条形图等可视化工具高效识别缺失模式,适用于大型数据集,助于提升效率与决策,建议优先使用矩阵图并结合热力图分析,本文给大家介绍Python Missingno数据缺失值可视化利器,感兴趣的朋友一起看看吧
    2025-06-06
  • 整理Python 常用string函数(收藏)

    整理Python 常用string函数(收藏)

    这篇文章主要介绍了整理Python 常用string函数(收藏)的相关资料,具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • python中threading开启关闭线程操作

    python中threading开启关闭线程操作

    这篇文章主要介绍了python中threading开启关闭线程操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 简单的python后台管理程序

    简单的python后台管理程序

    这篇文章主要为大家详细介绍了简单python后台管理程序的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Python使用Flask-SQLAlchemy连接数据库操作示例

    Python使用Flask-SQLAlchemy连接数据库操作示例

    这篇文章主要介绍了Python使用Flask-SQLAlchemy连接数据库操作,简单介绍了flask、Mysql-Python以及Flask-SQLAlchemy的安装方法,并结合实例形式分析了基于Flask-SQLAlchemy的数据库连接相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • python实现的一个p2p文件传输实例

    python实现的一个p2p文件传输实例

    这篇文章主要介绍了python实现的一个p2p文件传输实例,文中用来解决多台服务器维护文件同步问题,需要的朋友可以参考下
    2014-06-06
  • Python常用内置模块日志、随机数、时间、OS与JSON详解

    Python常用内置模块日志、随机数、时间、OS与JSON详解

    本文介绍了Python开发中常用的五大模块:日志、随机数、时间、系统文件操作及JSON数据处理,详细讲解了各模块的的常见函数及其应用场景,需要的朋友可以参考下
    2026-05-05

最新评论