【问题标题】:dump of lists into csv export将列表转储到 csv 导出
【发布时间】:2018-11-11 23:29:29
【问题描述】:

我需要添加列标题,然后将以下内容导出到 csv。 但是当我导出列表时,我会得到最后一行,其中包含列中的每个字符。

这是输出:

如果我实现 df=pd.DataFrame([d]) 我得到以下信息:

创建此列表的代码如下

soup=BeautifulSoup(s,'lxml')
soup.prettify()
for anchor in soup.findAll('a', href=True):
s=anchor['href']
if 'bus' in s:
    urlparse(s)
    path = urlparse(s).path[1:]
    parts = path.split('/')
    d= parts[2:4]
    df=pd.DataFrame(d)
    print(df)

【问题讨论】:

  • 请将截图替换为实际数据。数据、代码和错误的屏幕截图不属于 SO。
  • @DYZ 但我无法将数据保存到 csv 因此我问这个问题。由于某种原因,我无法从命令提示符复制粘贴结果。顺便说一下,它的数据很多,而且只是其中的一小部分。
  • d是什么类型的对象?为什么要将它作为列表传递给pd.DataFrame(例如在[] 中)。你试过pd.DataFrame(d)吗?
  • 如果我不使用 [] alon-De-Coiffure-Pour-Hommes-Laurier 0 0 Longueuil 1 King-s-Barbershop 0 0 Longueuil 1 King-s-Barbershop 0,我会得到类似的结果0 隆格伊 1 国王理发店 0 0 隆格伊 1 国王理发店 0 0 隆格伊 1 国王理发店 0 0 隆格伊 1 国王理发店 0 0 隆格伊 1 国王理发店
  • 我将代码添加到帖子中

标签: python pandas


【解决方案1】:

我认为问题在于,对于循环的每次迭代,您都在创建一个 new DataFrame;而我想您可能想要的是单个DataFrame,其中包含d 的所有 值。试试下面的:

# Instantiate an empty list to collect values of `d` for each iteration
d_values = []

soup=BeautifulSoup(s,'lxml')
soup.prettify()
for anchor in soup.findAll('a', href=True):
    s=anchor['href']

    if 'bus' in s:
        urlparse(s)
        path = urlparse(s).path[1:]
        parts = path.split('/')
        d = parts[2:4]

        # Append `d` to your list, creating a list of lists
        d_values.append(d)

# Once your loop is done, create a DataFrame from your list of lists
df = pd.DataFrame(d_values, columns=['col1name','col2name'])

【讨论】:

  • 非常感谢!非常感谢您的帮助!
猜你喜欢
  • 2017-07-20
  • 2018-06-26
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多