【发布时间】:2020-05-10 18:18:03
【问题描述】:
我创建了一个 for 循环来迭代数据帧并将其导出到 csv
for x in range (len(price)):
df = pd.DataFrame(data1, columns= ['Price', 'Location', 'Area size'])
data1 = {'Price': [price[x].text],
'Location': [location[x].text],
'Size': [area_size[x].text]}
df.to_csv('static/home.csv', header="False", mode="a")
driver.quit()
csv 已成功创建,但由于“df”在 for 循环中,Price/Location/Areasize 列也创建了与 foor 循环一样多次,它看起来像这样
我尝试像这样在 foo 循环之外删除 df:
df = pd.DataFrame(data1, columns= ['Price', 'Location', 'Area size'])
for x in range (len(price)):
data1 = {'Price': [price[x].text],
'Location': [location[x].text],
'Size': [area_size[x].text]}
df.to_csv('static/home.csv', header="False", mode="a")
driver.quit()
但随后它给出了“未定义数据1”的错误。知道如何通过不迭代 Price/Location/Area 列来创建 for 循环,这样它们就不会被多次创建?
【问题讨论】:
-
你能分享一个你的数据框样本吗?
-
您不想创建列的次数与循环运行的次数一样,但是您也可以使用 to_csv 和循环中的附加模式。我不确定我是否理解这件事的兴趣?是因为例如
[price[x].text]还是另一个太大? -
@user3916 试试
df.to_csv('static/home.csv', header=True if x==0 else False, mode="a") -
谢谢 试试这个。我让它像这样工作,但它有点难看...
df = pd.DataFrame(columns= ['Price', 'Location', 'Area size']) df.to_csv('static/home.csv', header=True) for x in range (len(price)): data1 = {'Price': [price[x].text], 'Location': [location[x].text], 'Size': [area_size[x].text]} df = pd.DataFrame(data1, columns= ['Price', 'Location', 'Area size']) df.to_csv('static/home.csv', header=False, mode="a") driver.quit()基本上在循环内外创建了一个 df -
你的作品太不知道你可以在那里使用 if/else,谢谢!
标签: python pandas selenium for-loop