从列表中提取标题,并创建一个与标题并排放置到列表元素的DataFrame

SD垃圾

抓取网站后,我得到了一个看起来像这样的列表:

data = ['\xa0header1', 'element1', 'element2', 'element3', '\xa0header2', 'element4', 'element5']

等等。

我想用抓取的数据创建一个熊猫数据框,如下所示:

          A         B
   0  element1   header1
   1  element2   header1
   2  element3   header1
   3  element4   header2
   4  element5   header2

因此,基本上,我想在下一列中显示标题,该标题位于初始列表的一组元素上方。

考虑到标题前面的特殊字符,如何轻松地在列表中查找它们,该怎么办?

pp

itertools groupby +重复+链

这是使用该itertools模块的一种解决方案本质上,这些是我们需要执行的唯一操作:

  1. 根据项目是否以分组\xa0
  2. 分组后,为列表列表中的每个列表重复标题。
  3. 连锁系列的结果,AB删除嵌套列表。

至关重要的是,这些操作已经在标准库中懒惰而有效地实现了,因此无需使用纯Python进行复制(尽管这本身就是一个很好的学习练习)。

完整的解决方案:

from itertools import chain, groupby, repeat

chainer = chain.from_iterable

data = ['\xa0header1', 'element1', 'element2', 'element3',
        '\xa0header2', 'element4', 'element5']

def condition(x):
    return x.startswith('\xa0')

# create list of lists for elements
elements = [list(j) for i, j in groupby(data, key=condition) if not i]

# create list of headers
headers = [next(j) for i, j in groupby(data, key=condition) if i]

# chain list of lists, and use repeat for headers
df = pd.DataFrame({'A': list(chainer(LoL)),
                   'B': list(chainer(repeat(i, j) for i, j in \
                             zip(headers, map(len, elements))))})

print(df)

          A         B
0  element1   header1
1  element2   header1
2  element3   header1
3  element4   header2
4  element5   header2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

列表菜单元素并排放置

从元组列表中提取第一个元素到列表中

创建一个函数来迭代R中大列表中的小标题元素

HTML-并排放置标题

访问小标题列表中的最后一个元素

在一个主要div元素内并排放置4个div元素

当任何一个元素与另一个列表的元素匹配时,如何从列表的列表中提取列表?

SwiftUI-并排放置两个列表

F#:在列表中创建一个包含所有列表标题的列表

如何并排放置嵌套列表?

从两个列表中提取一个共同元素,并通过避免重复创建一个字典,从一个列表映射到另一个列表

递归地从一个列表中提取元素与另一个列表中的元素

从具有另一个列表中给定索引的列表元素中提取

如何将4个图像以及标题和描述并排放置在html框中

使用Kotlin从另一个列表中提取的字符串创建列表

如何创建从另一个对象列表中提取数据的列表

连续放置列表标题

如何将列表中的元素直接放置到另一个列表中?

如何将标题与html下方的图片并排放置

从嵌套列表的子列表中提取第一个和最后一个元素

使用awk从grep匹配中提取文本并排放置

如何从带有列表列的小标题中提取单个元素,列表列是尺寸不等的列表列表?

在HTML5中将三个列表水平放置(并排放置)

从嵌套列表中提取列表标题作为变量

从另一个DataFrame的索引列表中提取DataFrame

是否可以从多条拟合线中提取斜率和截距到一个小标题中?

创建一个自定义的RecyclerView:标题和项目列表

使用第一个列表作为标题从表创建字典

如何在 React 中创建一个带有垂直标题的两列表?