zendesk api返回字段作为字典列表,但每个列表是一个单独的记录。我想知道是否有更好的方法将其全部转换为数据框架。如果它是字典的字典,那么json_normalize
会处理它,没有问题。
注意:不是所有的记录都有相同的字段id
样本数据:
data = [{
"ticket_id": 4,
"customer_id": 8,
"created_at": "2022-05-01",
"custom_fields": [
{
"id": 15,
"value": "website"
},
{
"id": 16,
"value": "broken"
},
{
"id": 23,
"value": None
},
],
'group_id': 42
}]
运行任何形式的Dataframe,from_records
,from_json
或json_normalize
给出了我想要的大部分内容,但列表在单列中:
t_df = pd.json_normalize(data)
t_df
输出:
您应该先处理数据/字典,然后用它构造一个DataFrame。它将使您的生活更容易,比尝试使用pandas
操作数据(即在DataFrame创建之后)更快。
import pandas as pd
data = [{
"ticket_id": 4,
"customer_id": 8,
"created_at": "2022-05-01",
"custom_fields": [
{
"id": 15,
"value": "website"
},
{
"id": 16,
"value": "broken"
},
{
"id": 23,
"value": None
},
],
'group_id': 42
}]
custom_fields = data[0].pop('custom_fields')
data[0].update({rec['id']: rec['value'] for rec in custom_fields})
t_df = pd.DataFrame(data)
输出:
>>> t_df
ticket_id customer_id created_at group_id 15 16 23
0 4 8 2022-05-01 42 website broken None
看起来pandas没有自动确定哪些字段是"元数据";哪些是"记录"?——比;如果您的数据是固定的,我建议硬编码以下内容:
>>> t_df = pd.json_normalize(
... data,
... meta=["ticket_id", "customer_id", "created_at", "group_id"],
... record_path=["custom_fields"]
... )
id value ticket_id customer_id created_at group_id
0 15 website 4 8 2022-05-01 42
1 16 broken 4 8 2022-05-01 42
2 23 None 4 8 2022-05-01 42
文档:https://pandas.pydata.org/docs/reference/api/pandas.json_normalize.html
import pandas as pd
data = [{
"ticket_id": 4,
"customer_id": 8,
"created_at": "2022-05-01",
"custom_fields": [
{
"id": 15,
"value": "website"
},
{
"id": 16,
"value": "broken"
},
{
"id": 23,
"value": None
},
],
'group_id': 42
}]
df = pd.DataFrame(data)
for index in df.index:
for i in df.loc[index,'custom_fields']:
df.loc[index,i['id']] = i['value']
df.drop(columns = 'custom_fields',inplace = True)
df
相关内容
- 将字典列表转换为Ansible中的字符串列表
- 将可见列表转换为出现次数字典
- 尝试创建一个函数将字符串列表转换为一个字符串,并在单词之间添加空格
- 为什么将嵌套列表转换为数组后 numpy flatten() 不起作用?
- 将图像列表转换为一个视频时,在FFmpeg中设置图像持续时间?
- 在clojure中将字符串列表转换为Java类型对象列表
- r语言 - 将字符向量列表转换为二进制矩阵
- 当数据嵌套且具有不规则模式时,将字典列表转换为pandas数据框架
- 单elemnt列表转换成valud df
- 在Python中将字符串列表转换为可调用函数列表
- 如何将数据帧列表转换为包含数据帧的元组
- 如何将文件中的点列表转换为两个单独的数组?
- 是否有一种方法将数组格式的字典列表转换为数据框中的单个列?
- 使用符合条件的值将列表转换为pandas数据帧
- 如何在c#中将单词列表转换为扁平的字符列表?
- 需要帮助将列表转换为字典并显示它
- 如何将列表转换为动态lambda?
- 类型错误:不可哈希类型:'list' for nltk。FreqDist 即使我已经将我的列表转换为元组
- 将列表转换为字符串的Python程序
- 扑动中的多维数组列表转换为模型类
最新更新
- 弹簧启动-采用与2个ymls不同的属性
- Symfony 5.3+翻译提供商Crowdin不更新本地文件
- 从文本文件(.txt)中读取字节数组
- 如何下载完整的雅典娜查询结果到CSV文件
- pyspark:在执行join - restrict相同列名选择时设置别名
- 如何在Eclipse RCP中隐藏/删除Preferences对话框中的导入/导出按钮
- 在自定义jackson反序列化器中以响应式方式从db加载实体
- 使用RestSharp从API返回JSON数据
- OAuth同意屏幕不显示正确的AppName
- 使用ByRef更新记录集字段
- 提取多个XML文件中所有标签之间的文本,并将提取的文本复制到csv文件中
- 在Laravel和Vue之间共享数据的糟糕方式
- 可以在Azure Devops中找到需求文本文件
- 如何在tensorflow keras中引用ground truth变量?
- Json解析并分配给DTO
- 如何通过不重复结果来正确地循环一个范围
- 给出零最优值的AMPL程序
- 再次出现身份验证问题,GCP源存储库使用publickey
- 打印添加到数据库的记录数有问题
- 如何插入一行到一个表在sql是完全相同的另一个表,但只有一个列不同?
- 如何在jupyter notebook中导入两个或多个包?
- 对product类型的访问器进行泛型迭代
- 如何在 react 中"remember"昂贵的递归函数中先前计算的值?
- 在eclipse IDE上使用Tomcat服务器在本地机器上修复eclipse上的编译错误,我能做些什么?
- 在使用reactjs和Material UI上传组件向API发送图像/文件时遇到麻烦
- Firebase 事务方法是否与所有写入操作(包括云函数的写入操作)兼容?
- 违反了竞争条件和主键约束
- 使用REGEX捕获SGM标记之间的文本
- 为什么我无法分配所有填充值?
- 如何以编程方式将"LINK/URL"复制到 android 应用程序中的剪贴板?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium