pandas 不要编号 加一行_在pandas.DataFrame中添加一行

@ Nasser的答案示例:

import pandas as pd >>> df = pd.DataFrame(columns=[‘lib’, ‘qty1’, ‘qty2’]) >>> for i in range(5): >>> df.loc[i] = [randint(-1,1) for n in range(3)] >>> >>> print(df) lib qty1 qty2 0 0 0 -1 1 -1 -1 1 2 1 -1 1 3 0 0 0 4 1 -1 -1 [5 rows x 3 columns]

你可以使用pandas.concat()或DataFrame.append() 。 有关详细信息和示例,请参阅合并,联接和连接 。

您可以创build一个字典列表,每个字典对应一个input数据行。 一旦列表完成,然后创build一个数据框。 这是一个更快的方法。

我有一个类似的问题,如果我为每一行创build一个数据框,并将其附加到主数据框,它花了30分钟。 另一方面,如果我使用下面的方法,几秒钟内就能成功。

rows_list = [] for row in input_rows: dict1 = {} # get input row in dictionary format # key = col_name dict1.update(blah..) rows_list.append(dict1) df = pd.DataFrame(rows_list)

如果事先知道条目的数量,则应该通过提供索引(从不同的答案中获取数据示例)来预先分配空间:

import pandas as pd import numpy as np # we know we’re gonna have 5 rows of data numberOfRows = 5 # create dataframe df = pd.DataFrame(index=np.arange(0, numberOfRows), columns=(‘lib’, ‘qty1’, ‘qty2’) ) # now fill it up row by row for x in np.arange(0, numberOfRows): #loc or iloc both work here since the index is natural numbers df.loc[x] = [np.random.randint(-1,1) for n in range(3)] In[23]: df Out[23]: lib qty1 qty2 0 -1 -1 -1 1 0 0 0 2 -1 0 -1 3 0 -1 0 4 -1 0 0

速度比较

In[30]: %timeit tryThis() # function wrapper for this answer In[31]: %timeit tryOther() # function wrapper without index (see, for example, @fred) 1000 loops, best of 3: 1.23 ms per loop 100 loops, best of 3: 2.31 ms per loop

而且,从评论中可以看出,6000的速度差异变得更大:

增加arrays(12)的大小和行数(500)使速度差异更加显着:313ms vs 2.29s

要有效追加,请参阅如何向”pandas”数据框添加额外的行以及” 使用放大设置” 。

在不存在的键索引数据上通过loc/ix添加行。 例如:

In [1]: se = pd.Series([1,2,3]) In [2]: se Out[2]: 0 1 1 2 2 3 dtype: int64 In [3]: se[5] = 5. In [4]: se Out[4]: 0 1.0 1 2.0 2 3.0 5 5.0 dtype: float64

要么:

In [1]: dfi = pd.DataFrame(np.arange(6).reshape(3,2), …..: columns=[‘A’,’B’]) …..: In [2]: dfi Out[2]: AB 0 0 1 1 2 3 2 4 5 In [3]: dfi.loc[:,’C’] = dfi.loc[:,’A’] In [4]: dfi Out[4]: ABC 0 0 1 0 1 2 3 2 2 4 5 4 In [5]: dfi.loc[3] = 5 In [6]: dfi Out[6]: ABC 0 0 1 0 1 2 3 2 2 4 5 4 3 5 5 5

mycolumns = [‘A’, ‘B’] df = pd.DataFrame(columns=mycolumns) rows = [[1,2],[3,4],[5,6]] for row in rows: df.loc[len(df)] = row

您可以使用ignore_index选项将单个行附加为字典。

f = pandas.DataFrame(data = {‘Animal’:[‘cow’,’horse’], ‘Color’:[‘blue’, ‘red’]}) >>> f Animal Color 0 cow blue 1 horse red >>> f.append({‘Animal’:’mouse’, ‘Color’:’black’}, ignore_index=True) Animal Color 0 cow blue 1 horse red 2 mouse black

这不是一个OP问题的答案,而是一个玩具的例子来说明@ShikharDua的答案,以上我发现它非常有用。

虽然这个片段是微不足道的,在实际的数据我有1000行和许多列,我希望能够按不同列分组,然后执行多个塔列的统计。 所以有一个可靠的方法来一次一行地构build数据框是非常方便的。 谢谢@ShikharDua!

import pandas as pd BaseData = pd.DataFrame({ ‘Customer’ : [‘Acme’,’Mega’,’Acme’,’Acme’,’Mega’,’Acme’], ‘Territory’ : [‘West’,’East’,’South’,’West’,’East’,’South’], ‘Product’ : [‘Econ’,’Luxe’,’Econ’,’Std’,’Std’,’Econ’]}) BaseData columns = [‘Customer’,’Num Unique Products’, ‘List Unique Products’] rows_list=[] for name, group in BaseData.groupby(‘Customer’): RecordtoAdd={} #initialise an empty dict RecordtoAdd.update({‘Customer’ : name}) # RecordtoAdd.update({‘Num Unique Products’ : len(pd.unique(group[‘Product’]))}) RecordtoAdd.update({‘List Unique Products’ : pd.unique(group[‘Product’])}) rows_list.append(RecordtoAdd) AnalysedData = pd.DataFrame(rows_list) print(‘Base Data : \n’,BaseData,’\n\n Analysed Data : \n’,AnalysedData)

为了Pythonic的方式,在这里添加我的答案:

res = pd.DataFrame(columns=(‘lib’, ‘qty1’, ‘qty2’)) res = res.append([{‘qty1’:10.0}], ignore_index=True) print(res.head()) lib qty1 qty2 0 NaN 10.0 NaN

创build一个新的logging(数据框)并添加到old_data_frame 。

通过值列表和相应的列名创build一个new_record (data_frame)

new_record = pd.DataFrame([[0,’abcd’,0,1,123]],columns=[‘a’,’b’,’c’,’d’,’e’]) old_data_frame = pd.concat([old_data_frame,new_record])

另一种方法(可能不是很高效):

add a row def add_row(df, row): colnames = list(df.columns) ncol = len(colnames) assert ncol == len(row), “Length of row must be the same as width of DataFrame: %s” % row return df.append(pd.DataFrame([row], columns=colnames))

您也可以像这样增强DataFrame类:

import pandas as pd def add_row(self, row): self.loc[len(self.index)] = row pd.DataFrame.add_row = add_row

import pandas as pd t1=pd.DataFrame() for i in range(len(the number of rows)): #add rows as columns t1[i]=list(rows) t1=t1.transpose() t1.columns=list(columns)

简单一点。 通过将列表作为input,将在数据框中作为行添加:

import pandas as pd res = pd.DataFrame(columns=(‘lib’, ‘qty1’, ‘qty2’)) for i in range(5): res_list = list(map(int, input().split())) res = res.append(pd.Series(res_list,index=[‘lib’,’qty1′,’qty2′]), ignore_index=True)

您也可以build立一个列表清单并将其转换为数据框 –

import pandas as pd rows = [] columns = [‘i’,’double’,’square’] for i in range(6): row = [i, i2, ii] rows.append(row) df = pd.DataFrame(rows, columns=columns)

我双广场

0 0 0 0

1 1 2 1

2 2 4 4

3 3 6 9

4 4 8 16

5 5 10 25

这将负责将项目添加到空的DataFrame。 问题是,第一个索引df.index.max()== nan:

df = pd.DataFrame(columns=[‘timeMS’, ‘accelX’, ‘accelY’, ‘accelZ’, ‘gyroX’, ‘gyroY’, ‘gyroZ’]) df.loc[0 if math.isnan(df.index.max()) else df.index.max() + 1] = [x for x in range(7)]

Original: https://blog.csdn.net/weixin_31880471/article/details/114906503
Author: 拐个王子回古墓
Title: pandas 不要编号 加一行_在pandas.DataFrame中添加一行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739061/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 01_pytest_测试框架之基础篇

    一、pytest什么是单元测试框架:1、什么是单元测试框架指在软件开发过程中,针对软件的最小单位(函数–就是测试用例 方法)进行正确性的检查测试2、有哪些?java: …

    Python 2023年9月14日
    024
  • python外星人颜色答案_Python-外星人

    此项目在学习Python的过程中,对照着书本所写,已成功运行。 所用的编辑器为Spyder,安装插件Pygame. 外星人及飞船图片下载链接 以下为小部分代码,完整版已上传资源。 …

    Python 2023年9月22日
    042
  • CSS 网格 Gird 布局

    通过将属性 display 的值设为 grid,HTML 元素就可以变为网格容器。 注意: 在 CSS 网格中,父元素称为容器(container),它的子元素称为项(items)…

    Python 2023年6月9日
    073
  • Celery笔记九之task运行结果查看

    这一篇笔记介绍一下 celery 的 task 运行之后结果的查看。 前面我们使用的配置是这样的: CELERY_RESULT_BACKEND = "redis://lo…

    Python 2023年8月3日
    033
  • 【Numpy】

    目录 常数 #判断array中是否有几个空值 数据类型 时间日期和时间增量 给定一系列不连续的日期序列。填充缺失的日期,使其成为连续的日期序列。 如何得到昨天,今天,明天的的日期 …

    Python 2023年8月28日
    059
  • python实现线条的渐变_具有线条颜色渐变和颜色b的python matplotlib

    import numpy as np import matplotlib.pyplot as plt import matplotlib.collections as mcoll …

    Python 2023年9月5日
    079
  • 【项目实战】Python实现Catboost回归模型(CatBoostRegressor算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解),如需 数据+代码+文档+视频讲解可以直接到文章最后获取。 1.项目背景 CatBoost是一种基于对称决策树(o…

    Python 2023年9月3日
    076
  • scrapy爬虫之爬取汽车之家奥迪Q7高清图片

    文章目录 前言 一、项目准备 * 1.安装scrapy 2.创建scrapy项目 3.创建scrapy爬虫 4.创建结果 5.修改配置 二、项目实现 * 1.分析网页 2.创建It…

    Python 2023年10月4日
    046
  • python 关于matplotlib

    python 关于matplotlib matplotlib简介 Matplotlib 是 Python 的 绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。M…

    Python 2023年9月2日
    046
  • pytest+selenium 测试思路

    需要PO模式,对测试代码和和操作代码进行分离 需要单例模式,保证每个case 只有一个窗口被打开(在业务只需要一个窗口的情况下),同时方便代码调用 配置参数化 定位元素参数化 用例…

    Python 2023年9月10日
    035
  • python网络编程socket基础

    背景 Python 提供了两个级别访问的网络服务:● 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket …

    Python 2023年5月25日
    073
  • Python虚拟环境安装和Flask

    Flask简介 1.Flask 是用 Python 语言基于 Werkzeug 工具向编写的轻量级Web 开发框架。2.Flask 本身有两个最核心的部分:Werkzeug(路由模…

    Python 2023年8月10日
    062
  • 【django入门】 02 初探app、view、url、templates、static

    创建APP命令 python manage.py startapp myapp app组成介绍 如上图,在终端中展示树状结构—— windows为 tree /f macOS为 t…

    Python 2023年6月15日
    081
  • Python库-pandas详解

    Python库-pandas详解 1. pandas介绍 2. Series 3. DataFrame * 3.1 DataFrame结构 3.2 DataFrame属性与方法 3…

    Python 2023年7月31日
    047
  • 如何使用python连接mysql数据库

    如何使用python连接mysql数据库 1.要想让python能够连接到mysql,首先就是要先下载安装pymysql的模块:Win+R 进入命令行,使用pip install …

    Python 2023年8月1日
    044
  • mac M1小白 关于python安装flask

    背景:刚入mac M1的小白,安装flask捣腾了几天,希望能解决你的问题。mac自带python2.7环境,下载了python3.9社区版,因此同时存在python2.7和pyt…

    Python 2023年8月12日
    043
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球