当前位置: 首页 > 知识库问答 >
问题:

通过一次追加一行创建pandas数据帧

费朗
2023-03-14

我知道pandas的设计目的是加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行。做这件事最好的方法是什么?

我成功创建了一个空DataFrame,其中包含:

res = DataFrame(columns=('lib', 'qty1', 'qty2'))

然后我可以添加一个新行,并用以下内容填充字段:

res = res.set_value(len(res), 'qty1', 10.0)

它可以工作,但看起来很奇怪:-/(它不能添加字符串值)

我如何添加一个新的行到我的数据帧(不同的列类型)?

共有3个答案

翁昊乾
2023-03-14

您可以使用pandas.concat()dataframe.append()。有关详细信息和示例,请参见合并、联接和串联。

夏新翰
2023-03-14

如果您可以提前获取数据帧的所有数据,则有一种比附加到数据帧更快得多的方法:

  1. 创建一个字典列表,其中每个字典对应一个输入数据行。
  2. 从此列表创建数据帧。

我有一个类似的任务,逐行添加到数据帧需要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)               
宗苗宣
2023-03-14

您可以使用df.loc[i],其中具有i索引的行将是您在数据帧中指定的行。

>>> import pandas as pd
>>> from numpy.random import randint

>>> df = pd.DataFrame(columns=['lib', 'qty1', 'qty2'])
>>> for i in range(5):
>>>     df.loc[i] = ['name' + str(i)] + list(randint(10, size=2))

>>> df
     lib qty1 qty2
0  name0    3    3
1  name1    2    4
2  name2    2    8
3  name3    2    1
4  name4    9    6
 类似资料:
  • 问题内容: 我想将Pandas数据框附加到名为“ NewTable”的sqlite数据库中的现有表上。NewTable具有三个字段(ID,名称,年龄),ID是主键。我的数据库连接: 我要附加的数据框: 如上所述,ID是NewTable中的主键。键“ L1”已在NewTable中,但键“ L11”不在中。我尝试将数据框追加到NewT​​able。 这将引发错误: 该错误很可能是因为键“ L1”已经在

  • 我在anylogic中根据我创建的数据库表生成代理。在这个数据库中,我有我的代理的一些特征。这个代理应该是我的“调度代理”,因为我的重点是重新调度,所以我的生产订单必须保存为队列中的代理。我的问题是,在生成代理时,首先我不能告诉系统一次生成所有代理(比如“导入”数据库的行,并将每一行转换为具有特征的代理)。我试着在每个生产订单之间增加1s的差异,但是,当到达最后一个日期时,我的模拟给出了一个错误并

  • 我使用一个自定义搜索函数的ajax查询,返回超文本标记语言数据成功调用。我想把这个数据附加到已经在页面上初始化的jQuery数据表中。当页面加载jQuery可数据显示,但是当我启动搜索功能,数据被附加到可数据,但不是排序,可搜索形式的可数据用户界面。ajax调用工作和数据返回时,我把成功的调用到console.log. 以下是HTML: 下面是带有Ajax调用的JQuery: }); 这是从aja

  • 我希望的工作方式与相同,以符合Python索引约定。不支持按单个整数索引行是否有设计原因?

  • 我发现了这个先前的职位,它让我接近。如何将数据帧的列和行的子集转换成数字数组 但是,我需要迭代数据帧,并为“a”中每个正确匹配的值创建一个从列“b”到列“j”的3x3数组(或矩阵),而不是根据第三列中的值创建两列的单个数组(或数组)。 我想要的是两个独立的数组,每个一个 我尝试了以下操作,但收到了一个非常难看的错误。该代码是基于原始帖子的尝试。 这是错误- () ----中的IndexingErr

  • 问题内容: 下面是我的数据框 我想在第一个位置插入新行 姓名:院长,年龄:45,性别:男 在熊猫中做到这一点的最佳方法是什么? 问题答案: 如果要经常进行操作,那么就性能而言,首先将数据收集到列表中然后使用(类似于@Serenity的解决方案)是有意义的: 演示: PS我不会把,,过于频繁(每单排),因为它是相当昂贵。因此,想法是分批进行…