首页 > 解决方案 > 如何拆分网络抓取的列名?

问题描述

嘿,我实际上正在对口袋妖怪数据进行网络抓取分析。所以我有以下代码:

pokemon='https://pokemondb.net//pokedex/bulbasaur'
tables = pd.read_html(requests.get(pokemon, headers={'User-agent': 'Mozilla/5.0'}).text)[-2].T
tables.columns = tables.iloc[0]
tables=tables.drop(tables.index[0])
tables

这给了我这样的东西: 带有口袋妖怪位置的列

现在我想要的是为不同的游戏拆分的列,例如,RedBlue 将分别是 Red 和 Blue,RedBlue 的相同数据显示为 Red 和 blue 单独的列。我想我可以在抓取数据时做到这一点,但我不知道该怎么做。

我在下面附上了与​​数据相关的 html 标签的屏幕截图。我认为红色和蓝色可以分开,因为它们之间有一个“&”。我该怎么做呢?

HTML 标签

标签: python-3.xpandas

解决方案


在这种情况下,您应该按列迭代:

(Pdb) tables.columns
Index(['RedBlue', 'Yellow', 'GoldSilverCrystal', 'RubySapphire',
       'FireRedLeafGreen', 'Emerald', 'DiamondPearlPlatinum',
       'HeartGoldSoulSilver', 'BlackWhiteBlack 2White 2', 'XY',
       'Omega RubyAlpha Sapphire', 'SunMoon', 'Ultra SunUltra Moon',
       'Let's Go PikachuLet's Go Eevee', 'SwordShield'],

并创建一个特殊的逻辑,如:

for column in tables.columns:
    if column = "RedBlue":
        # create new columns

由于您没有任何特殊字符分隔字符串,因此很难为所有列创建逻辑


推荐阅读