Python 熊猫在同一列上合并数据帧

Python 熊猫在同一列上合并数据帧,python,csv,pandas,Python,Csv,Pandas,我正在编写一个scraper,我希望循环遍历一个链接列表,并将所有结果作为列合并到同一个键上的数据帧(如左连接) 我在Ipython笔记本中运行了这段代码,从dataframe生成的csv没有意义,但是如果在运行脚本后,我在共同列“问题”上合并了df和df2,我得到了我需要的连接,但是在脚本中出现了一些错误 这是整个脚本,有登录请求,但你不必创建用户,你可以作为来宾运行它,你不会在评论中得到所有答案 import requests from bs4 import BeautifulSoup as

我正在编写一个scraper,我希望循环遍历一个链接列表,并将所有结果作为列合并到同一个键上的数据帧(如左连接)

我在Ipython笔记本中运行了这段代码,从dataframe生成的csv没有意义,但是如果在运行脚本后,我在共同列“问题”上合并了df和df2,我得到了我需要的连接,但是在脚本中出现了一些错误

这是整个脚本,有登录请求,但你不必创建用户,你可以作为来宾运行它,你不会在评论中得到所有答案

import requests
from bs4 import BeautifulSoup as bs
import csv
import pandas as pd

get_url = 'https://www.g2crowd.com/login?form=login'
post_url = 'https://www.g2crowd.com/user_sessions'
review_url = 'https://www.g2crowd.com/survey_responses/salesforce-crm-review-29972'

links = []

with open("links.csv", "r") as f:
    spamreader = csv.reader(f, delimiter=',')
    for row in spamreader:
        links.append(row)
links = links[1:]

s = requests.Session()
r = s.get(get_url)
soup = bs(r.text)
token = soup.select('input[name="authenticity_token"]')[0]['value']
username = 'email@gmail.com'
password = 'password'

payload = {"user_session[login_email]": "email@gmail.com", "user_session[password]": "password"}
payload['authenticity_token'] = token
Referer = dict(Referer=get_url)
r = s.post(post_url, data=payload, headers=Referer)
print r.status_code

df = pd.read_csv("data.csv")
#df = df.set_index('questions')
for link in links:
    r = s.get(link[0])
    soup = bs(r.text)
    title = soup.title.contents[0]
    question_wrapper = soup.findAll("div", class_="question-wrapper")
    print len(question_wrapper)
    questions = []
    answers = []
    scraped_titles = []
    tricky_title = 'Salesforce CRM Review by G2 Crowd User in Transportation/Trucking/Railroad - March 13, 2013'
    with open("scraped_titles.csv", "r") as f:
        spamreader = csv.reader(f, delimiter=',')
        for row in spamreader:
            scraped_titles.append(row[0])
        scraped_titles = set(scraped_titles)
        if (title not in scraped_titles and title != tricky_title):
            for question in question_wrapper:
                q = question.label.contents[0]
                a = question.div.contents[0].text
                questions.append(q)
                answers.append(a)
                #qa = zip(questions, answers)
                qa = dict(questions=questions, answers=answers)
                df2 = pd.DataFrame(qa)
                #df2 = df2.set_index('questions', inplace=True)
                #df2.to_csv(title + ".csv", encoding='utf-8')
                df = pd.merge(df, df2, how='left', on='questions')

            with open("scraped_titles.csv", "a") as csvwriter:
                spamreader = csv.writer(csvwriter, delimiter=',')
                spamreader.writerow([unicode(title).encode("utf-8")])
        else:
            pass
df.to_csv("all_data.csv", encoding='utf-8')
我还尝试将所有评论保存到.csv,然后将所有内容与Pandas合并,但我遇到了一个奇怪的、罕见的未记录错误:

错误:未加引号的字段中出现新行字符-是否需要打开 文件是否处于通用换行符模式

我一直在努力寻找我的错误,如果有人能指出这将是非常有益的。
另外,我希望我已经按照规则设置了帖子的格式,如果没有,请帮助我更正。

不确定这里的情况是否如此。。。当csv文件将
\r
作为行分隔符(旧版Mac行终止符)时,我会出现此错误。@bernie我在某个地方找到了一篇讨论此问题的帖子,我是否应该遍历所有csv并清除\r?该错误发生在哪一行?发布的错误不是在运行发布的代码时发生的,而是在我保存所有“df2”时发生的(每个单独的审查)到csv,然后当我尝试将这些csv读入Pandas时,我会得到错误。在保存到csv之前,可能会清除“\r”?不确定这里是否是这种情况…当csv文件具有
\r
作为行分隔符(传统Mac行终止符)时,我会得到此错误@bernie我在某个地方找到了一篇讨论这一问题的帖子,我是否应该遍历所有CSV并清理\r?错误发生在哪一行?发布的错误不是在运行发布的代码时发生的,而是在我保存所有“df2”(每个单独的评论)时发生的到csv,然后当我尝试将这些csv读入Pandas时,我会得到错误。在保存到csv之前,可能会清除“\r”?