python dataframe增加一行_python - 在pandas.DataFrame中添加一行

python - 在pandas.DataFrame中添加一行

据我所知,pandas旨在加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行。做这个的最好方式是什么 ?

我成功创建了一个空的DataFrame:

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

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

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

它工作但似乎很奇怪: - /(它添加字符串值失败)

如何向我的DataFrame添加新行(具有不同的列类型)?

PhE asked 2019-01-25T09:34:12Z

18个解决方案

305 votes

@ Nasser回答的例子:

>>> import pandas as pd

>>> import numpy as np

>>> df = pd.DataFrame(columns=['lib', 'qty1', 'qty2'])

>>> for i in range(5):

>>> df.loc[i] = [np.random.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]

fred answered 2019-01-25T09:34:24Z

231 votes

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

NPE answered 2019-01-25T09:34:48Z

229 votes

如果您可以预先获取数据帧的所有数据,则可以采用比附加到数据框更快的方法:

创建一个字典列表,其中每个字典对应一个输入数据行。

从此列表创建数据框。

我有一个类似的任务,逐行追加数据框需要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)

ShikharDua answered 2019-01-25T09:35:42Z

69 votes

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

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

你可能感兴趣的:(python,dataframe增加一行)