当前位置: 首页 > news >正文

农村电子商务网站建设百度品牌广告收费标准

农村电子商务网站建设,百度品牌广告收费标准,杭州公司注册代办,做网站的学校57_Pandas中的json_normalize将字典列表转换为DataFrame 可以使用 pandas.json_normalize() 将具有公共键的字典列表转换为 pandas.DataFrame。 由于它是一种常用的JSON格式,可以通过Web API获取,所以能够将其转换为pandas.DataFrame是非常方便的。 在…

57_Pandas中的json_normalize将字典列表转换为DataFrame

可以使用 pandas.json_normalize() 将具有公共键的字典列表转换为 pandas.DataFrame。

由于它是一种常用的JSON格式,可以通过Web API获取,所以能够将其转换为pandas.DataFrame是非常方便的。

在此,对以下内容进行说明。

  • 使用 pandas.DataFrame() 进行转换
  • pandas.json_normalize() 的基本用法
  • 更复杂的情况:arguments record_path, meta

使用 pandas.read_json() 直接读取 JSON 字符串或文件作为 pandas.DataFrame 而不是由字典或列表组成的对象。

  • 56_Pandas读取 JSON 字符串/文件 (read_json)

请注意,pandas.json_normalize() 是从 pandas 1.0.0 提供的,在以前的版本中是作为 pandas.io.json.json_normalize() 提供的。从 1.2.2 开始,pandas.io.json.json_normalize() 仍然可以使用,但已弃用,并且会出现警告(FutureWarning)。

使用 pandas.DataFrame() 进行转换

以下面的字典列表为例:

import pandas as pdl_simple = [{'name': 'Alice', 'age': 25},{'name': 'Bob'}]

字典中的key键成为列标签(列名),key不存在时的元素成为缺失值NaN。

print(pd.DataFrame(l_simple))
#     name   age
# 0  Alice  25.0
# 1    Bob   NaN

与 pandas.json_normalize() 的结果相同。

print(pd.json_normalize(l_simple))
#     name   age
# 0  Alice  25.0
# 1    Bob   NaN

pandas.json_normalize() 的基本用法

以字典为字典值的嵌套字典列表为例。

l_nested = [{'name': 'Alice', 'age': 25, 'id': {'x': 2, 'y': 8}},{'name': 'Bob', 'id': {'x': 10, 'y': 4}}]

使用 pandas.DataFrame() 时,值字典被转换为元素。

print(pd.DataFrame(l_nested))
#     name   age                 id
# 0  Alice  25.0   {'x': 2, 'y': 8}
# 1    Bob   NaN  {'x': 10, 'y': 4}

使用 pandas.json_normalize() 还将嵌套字典转换为每个键的单独列。

print(pd.json_normalize(l_nested))
#     name   age  id.x  id.y
# 0  Alice  25.0     2     8
# 1    Bob   NaN    10     4

嵌套部分,.默认为列名。这个分隔符可以用参数 sep 改变。

print(pd.json_normalize(l_nested, sep='_'))
#     name   age  id_x  id_y
# 0  Alice  25.0     2     8
# 1    Bob   NaN    10     4

更复杂的情况:arguments record_path, meta

如果字典值是如下所示的字典列表。

l_complex = [{'label': 'X','info' : {'n': 'nx', 'm': 'mx'},'data': [{'a': 1, 'b': 2},{'a': 3, 'b': 4}]},{'label': 'Y','info' : {'n': 'ny', 'm': 'my'},'data': [{'a': 10, 'b': 20},{'a': 30, 'b': 40}]}]

默认情况下,字典列表成为一个元素。

print(pd.json_normalize(l_complex))
#   label                                      data info.n info.m
# 0     X      [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]     nx     mx
# 1     Y  [{'a': 10, 'b': 20}, {'a': 30, 'b': 40}]     ny     my

如果在参数 record_path 中指定一个键,则只会转换与该键对应的值。可以使用参数 record_prefix 将前缀添加到列名。

print(pd.json_normalize(l_complex, record_path='data'))
#     a   b
# 0   1   2
# 1   3   4
# 2  10  20
# 3  30  40print(pd.json_normalize(l_complex, record_path='data', record_prefix='data_'))
#    data_a  data_b
# 0       1       2
# 1       3       4
# 2      10      20
# 3      30      40

如果要转换其他键值,请使用参数 meta 指定它。可以使用参数 meta_prefix 将前缀添加到列名。

print(pd.json_normalize(l_complex, record_path='data'))
#     a   b
# 0   1   2
# 1   3   4
# 2  10  20
# 3  30  40print(pd.json_normalize(l_complex, record_path='data', record_prefix='data_'))
#    data_a  data_b
# 0       1       2
# 1       3       4
# 2      10      20
# 3      30      40

如果要转换其他键值,请使用参数 meta 指定它。可以使用参数 meta_prefix 将前缀添加到列名。

print(pd.json_normalize(l_complex, record_path='data',meta='label'))
#     a   b label
# 0   1   2     X
# 1   3   4     X
# 2  10  20     Y
# 3  30  40     Yprint(pd.json_normalize(l_complex, record_path='data',meta='label', meta_prefix='meta_'))
#     a   b meta_label
# 0   1   2          X
# 1   3   4          X
# 2  10  20          Y
# 3  30  40          Y

如果 meta 指定的键对值是一个字典,则可以在列表 [[, ], …] 中指定子键。默认情况下,列名是 .,但在这里你可以用参数 sep 更改分隔符。

print(pd.json_normalize(l_complex, record_path='data',meta='info'))
#     a   b                    info
# 0   1   2  {'n': 'nx', 'm': 'mx'}
# 1   3   4  {'n': 'nx', 'm': 'mx'}
# 2  10  20  {'n': 'ny', 'm': 'my'}
# 3  30  40  {'n': 'ny', 'm': 'my'}print(pd.json_normalize(l_complex, record_path='data',meta=[['info', 'n'], ['info', 'm']]))
#     a   b info.n info.m
# 0   1   2     nx     mx
# 1   3   4     nx     mx
# 2  10  20     ny     my
# 3  30  40     ny     myprint(pd.json_normalize(l_complex, record_path='data',meta=[['info', 'n'], ['info', 'm']],sep='_'))
#     a   b info_n info_m
# 0   1   2     nx     mx
# 1   3   4     nx     mx
# 2  10  20     ny     my
# 3  30  40     ny     my

要将此示例中的所有元素转换为 pandas.DataFrame,请设置:

print(pd.json_normalize(l_complex, record_path='data',meta=['label', ['info', 'n'], ['info', 'm']],sep='_'))
#     a   b label info_n info_m
# 0   1   2     X     nx     mx
# 1   3   4     X     nx     mx
# 2  10  20     Y     ny     my
# 3  30  40     Y     ny     my

请注意,即使单独指定子键,它也必须是像 meta=[[, ]] 这样的列表列表。如果 meta=[, ] 则出错。

print(pd.json_normalize(l_complex, record_path='data',meta=[['info', 'n']]))
#     a   b info.n
# 0   1   2     nx
# 1   3   4     nx
# 2  10  20     ny
# 3  30  40     ny# print(pd.json_normalize(l_complex, record_path='data',
#                         meta=['info', 'n']))
# KeyError: "Try running with errors='ignore' as key 'n' is not always present"
http://www.ysxn.cn/news/2373.html

相关文章:

  • 开发网站有什么用网站优化公司哪家效果好
  • 北京商城网站建设费用百度手机应用市场
  • 做直播网站找哪家网站今日头条新闻下载安装
  • 抖音小店代运营seo优化师是什么
  • 网站加入收藏wap网站html5
  • wordpress 广告公司主题百度搜索关键词排名人工优化
  • wordpress 本地建站教程百度手机助手下载苹果版
  • 沈阳企业关键词优化关键词优化武汉
  • 大气的化妆品网站名谷歌广告联盟怎么做
  • 一站式营销平台域名注册服务网站哪个好
  • 江苏做网站价格淘宝运营培训
  • 一般卖机械行业的做哪些网站优化游戏性能的软件
  • 做两个一摸一样的网站什么是引流推广
  • 重庆做网站及优化报价江苏seo团队
  • 长沙网警石家庄百度搜索优化
  • 北京网站seo策划十大管理培训课程
  • 做阿里巴巴的网站的费用百度官网客服
  • 江西省网站备案青岛网站建设方案优化
  • 西安网站排名优化品牌推广策划方案
  • flash制作网站top镇江百度关键词优化
  • 怎么免费做网站推广网站投放广告费用
  • 北京做网站公司排郑州粒米seo顾问
  • 最新章节 第四百六十二章 花两亿做的网站公司网站设计定制
  • 全国企业信用信息公开系统查询保定seo网站推广
  • 上海做网站谁好教你如何建立网站
  • 网站联系方式设计企业网站建设原则是
  • 企业网站手机端网页制作官方网站
  • 制作静态动漫网站模板全网营销推广服务
  • 网站设计与开发的基本步骤包括哪些?企业培训师资格证报考2022
  • 湖北响应式网站建设上海百度推广方案