私信  •  关注

Jon Clements

Jon Clements 最近创建的主题
Jon Clements 最近回复了
1 年前
回复了 Jon Clements 创建的主题 » Python:使用Beautifulsoup和pandas改进迭代工作流?

一次从你的H1和P中获取文本怎么样:

h1s = [h1.text for h1 in bs.select('h1')[:4]]
ps =  [p.text for p in bs.select('p')]

df = pd.DataFrame({
    h1: p
    for h1, p in zip(h1s, [ps[3], ''.join(ps[4:7]), ps[8], ps[9])
}).T

可能对你有用的是将潜在的“值”和任何潜在的“乘数后缀”分开,所以假设你的 df['Vehicle Value']

s = pd.Series(['25k', '1.25m', '100k', '500', '2.5k'])

我们的预期结果应该是 [25000, 1250000, 100000, 500, 2500] . 所以我们要:

vm = s.str.extract('(?P<value>.*?)(?P<multiplier>[km])?$')

      value multiplier
0    25          k
1  1.25          m
2   100          k
3   500        NaN
4   2.5          k

然后将乘数转换为一个数字(k=1000,m=1000000,如果没有指定一个,则将其保留为1),然后将该值与其相乘,例如:

df['Numeric Vehicle Value'] = pd.to_numeric(vm['value']) * vm['multiplier'].replace({'k': 1000, 'm': 1000000}).fillna(1)
11 年前
回复了 Jon Clements 创建的主题 » 如何在python中跳过读取CSV文件的第一行?

你通常会使用 next(incsv) 将迭代器向前推进一行,这样就跳过了头。另一个(比如你想跳过30行)是:

from itertools import islice
for row in islice(incsv, 30, None):
    # process