【问题标题】:Pandas ignore header and a column from json bodyPandas 忽略 json 正文中的标题和列
【发布时间】:2020-03-30 03:16:29
【问题描述】:

我从来自 selenium 请求的 json 正文中选择了 results。我想摆脱标题和结果的第一列。尝试了 pandas 的一些方法,似乎对我不起作用。

这是我尝试过的

driver.get('https://reversewhois.domaintools.com/?ajax=mReverseWhois&call=ajaxUpdateRefinePreview&q=%5B%5B%5B%22whois%22%2C%222%22%2C%22VerifiedID%40SG-Mandatory%22%5D%5D%5D')
time.sleep(5)
pre = driver.find_element_by_tag_name("pre").text
data = json.loads(pre)
table = data['results']
tables = pd.read_html(table,header=None)

df = tables[-1]
print(df)

我收到了这样的回复

                    Domain Name Create Date                                        Registrar
0                         001.sg  2019-03-13          WEB COMMERCE COMMUNICATIONS (S) PTE LTD
1                     001cafe.sg  2020-01-01             EXABYTES NETWORK (SINGAPORE) PTE LTD

我只想去掉标题和第一列。我只需要域名和其他详细信息。谁能告诉我为什么我的方法不起作用?

【问题讨论】:

  • skiprows 参数能解决问题吗?你可以在这里查看详细信息 --> pandas.pydata.org/pandas-docs/stable/reference/api/…
  • 好的,它工作。但我也需要跳过第一列。
  • 你可以使用del df['column_name']
  • 我可以使用del df[''],因为第一个标题是空白的吗? @dzakyputra
  • df.drop?你怎么看?

标签: python json pandas selenium


【解决方案1】:

Pandas DataFrame 中,索引是它的内在组成部分。 类似于关系中的主键列(通常命名为 id) 数据库。

所以你不能运行 del df['']

但是您可以打印任何没有索引的 DataFrame。

实现此目的的方法之一是:

print(df.to_string(index=False))

你也可以试试:

df.style.hide_index()

【讨论】:

  • 你知道我怎样才能得到每个索引,就像我想将它保存在数据库中一样?
  • 它依赖于特定的 API 来对数据库执行操作。其中一些包含有关如何处理索引的参数。其他解决方案是reset_index,以便将索引列更改为“常规”列,然后它们可以像其他列一样保存在数据库中。
【解决方案2】:

您必须尝试使用​​skiprows 并跳过作为标题的第一行。

tables = pd.read_html(table,skiprows=1)

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2018-03-25
    相关资源
    最近更新 更多