@ 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 sin