-1

我在网上抓取了这个

['',
 'Aldoar, Foz Do Douro E Nevogilde',
 'Ontem 16:36',
 '',
 'Mafamude E Vilar Do Paraíso',
 '3',
 '',
 'Estela',
 '1',
 '',
 'Oeiras E São Julião Da Barra, Paço De Arcos E Caxias',
 '30',
 '',
 'Olivais',
 '29',
 '',
 'Olivais',
 '29',
 '',
 'Olivais',
 '29',
 '',
 'Nogueira, Fraião E Lamaçães',
 '28',
 '',
 'Fernão Ferro',
 '21',
 '',
 'Ovar, São João, Arada E São Vicente De Pereira Jusã',
 '21',
 '',
 'Eiras E São Paulo De Frades',
 '20',
 '',
 'Montijo E Afonsoeiro',
 '20',
 '',
 'Alcabideche',
 '19',
 '',
 'Bougado (São Martinho E Santiago)',
 '14',
 '',
 'Campo E Sobrado',
 '14',
 '',
 'Vila do Conde',
 '8']

并想使用 python/pandas 从每 3 行中选择第二行,所以我最终得到:

Aldoar, Foz Do Douro E Nevogilde

Mafamude E Vilar Do Paraíso

埃斯特拉

等等

提前谢谢

4

3 回答 3

1

您想从第二个元素开始每三个元素选择一个元素,即.index=1

您可以使用内置列表实现此目的__getitem__

X[1::3]

X您的初始清单在哪里。

于 2020-12-05T12:49:36.470 回答
1
s = ['',
 'Aldoar, Foz Do Douro E Nevogilde',
 'Ontem 16:36',
 '',
 'Mafamude E Vilar Do Paraíso',
 '3',
 '',
 'Estela',
 '1',
 '',
 'Oeiras E São Julião Da Barra, Paço De Arcos E Caxias',
 '30',
 '',
 'Olivais',
 '29',
 '',
 'Olivais',
 '29',
 '',
 'Olivais',
 '29',
 '',
 'Nogueira, Fraião E Lamaçães',
 '28',
 '',
 'Fernão Ferro',
 '21',
 '',
 'Ovar, São João, Arada E São Vicente De Pereira Jusã',
 '21',
 '',
 'Eiras E São Paulo De Frades',
 '20',
 '',
 'Montijo E Afonsoeiro',
 '20',
 '',
 'Alcabideche',
 '19',
 '',
 'Bougado (São Martinho E Santiago)',
 '14',
 '',
 'Campo E Sobrado',
 '14',
 '',
 'Vila do Conde',
 '8']
>>> s[1::3]
['Aldoar, Foz Do Douro E Nevogilde',
 'Mafamude E Vilar Do Paraíso',
 'Estela',
 'Oeiras E São Julião Da Barra, Paço De Arcos E Caxias',
 'Olivais',
 'Olivais',
 'Olivais',
 'Nogueira, Fraião E Lamaçães',
 'Fernão Ferro',
 'Ovar, São João, Arada E São Vicente De Pereira Jusã',
 'Eiras E São Paulo De Frades',
 'Montijo E Afonsoeiro',
 'Alcabideche',
 'Bougado (São Martinho E Santiago)',
 'Campo E Sobrado',
 'Vila do Conde']
于 2020-12-05T12:52:14.090 回答
0

这将起作用:

ls=['',
 'Aldoar, Foz Do Douro E Nevogilde',
 'Ontem 16:36',
 '',
 'Mafamude E Vilar Do Paraíso',
 '3',
 '',
 'Estela',
 ...
 '14',
 '',
 'Vila do Conde',
 '8']

现在您可以使用比内置方法更快的方法

def chunkIt(seq, num):
    avg = len(seq) / float(num)
    out = []
    last = 0.0

    while last < len(seq):
        out.append(seq[int(last):int(last + avg)])
        last += avg

    return out

h=len(ls)/3
chunk=chunkIt(ls,h)
# using list comprehension
print('\n'.join([chunk[i][1] for i in range(len(chunk))]))

花费时间:0.03806419999999999

或者

>>> print(ls[1::3])

所用时间:0.07802389999999992

于 2020-12-05T12:54:14.133 回答