【发布时间】:2022-01-25 16:43:39
【问题描述】:
我正在尝试寻找一种更优化的方法来向 pandas 数据框添加数据。 我已经看到了其他related questions,人们建议首先创建列表,然后将数据添加到 pandas(我现在实现了)。
在我当前的设置中,我循环遍历不同的列表(在示例中为 librarynr、books 和 sections),然后计算各种变量(在示例中,这些变量未计算但已设置;nrofletters , excitment 和 review) 我将它们添加到列表中,最后将列表添加到数据框中。
有谁知道进一步优化以提高此示例代码的性能?
重要提示:在我的最终代码中,所有行的变量不同,而是根据循环的迭代器进行计算(参见excitment 的计算示例)。
示例代码:
import pandas as pd
import time
books = ['LordOfTheRings','HarryPotter','LoveStory','RandomBook']
sections = ['Introduction','MainPart','Plottwist','SurprisingEnd']
librarynr = list(range(30000))
nrofletters = 3000
excitment = True
review = 'positive'
start_time = time.time()
summarydf = pd.DataFrame()
indexlist = []
nrofletterlist = []
excitmentlist = []
reviewlist = []
for library in librarynr:
for book in books:
for section in sections:
indexlist.append(str(library)+book+section)
nrofletterlist.append(nrofletters)
#example of variable calculation depending on iterators of loop:
if (library % 2 == 0) or (book[1] == 'L'):
excitment = False
else:
excitment = True
excitmentlist.append(excitment)
reviewlist.append(review)
summarydf['index'] = indexlist
summarydf['nrofletters'] = nrofletterlist
summarydf['excitment'] = excitmentlist
summarydf['review'] = reviewlist
listtime = time.time() - start_time
print(listtime)
【问题讨论】:
标签: python pandas list performance loops