向pandas DataFram添加一行

2024-04-26 13:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我成功创建了一个空数据框,其中:

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

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

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

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

如何向数据框中添加新行(具有不同的列类型)?


Tags: columns数据方法字符串目的类型dataframepandas
3条回答
>>> 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

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

  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)               

您可以使用pandas.concat()DataFrame.append()。有关详细信息和示例,请参见Merge, join, and concatenate

相关问题 更多 >