首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据模式使用额外空列的Pands json_normalize

根据模式使用额外空列的Pands json_normalize
EN

Stack Overflow用户
提问于 2021-07-02 20:48:42
回答 1查看 90关注 0票数 0

如何使用模式强制熊猫添加只包含NaN值的额外列。我的数据格式化为JSON记录,但是当一个字段不存在于记录中时,它在JSON表示中没有键,而不是一个NaN值。对于我希望拥有的模式中的某些列,在任何记录中都没有它的数据,因此它不会出现在JSON对象中,而且pd.json_normalize也不会为它创建一个列。如何强制pd.json_normalize的结果根据模式拥有所有列,如果该列没有可用的数据,则拥有一个包含所有NaN的列。

下面是我所拥有的数据和所需格式的示例:

代码语言:javascript
运行
复制
data = [
    {'foo': 'foo_value', 'bar': {'1': 'bar1', '2': 'bar2'}},
    {'foo': 'foo_value_2'}
]
desired_columns = ['foo', 'bar.1', 'bar.2', 'nodata.1', 'nodata.2']

如果我使用pd.json_normalize,我得到:

代码语言:javascript
运行
复制
>>> pd.json_normalize(data)
           foo bar.1 bar.2
0    foo_value  bar1  bar2
1  foo_value_2   NaN   NaN

相反,我想得到:

代码语言:javascript
运行
复制
           foo bar.1 bar.2  nodata.1  nodata.2
0    foo_value  bar1  bar2       NaN       NaN
1  foo_value_2   NaN   NaN       NaN       NaN

我该怎么做?

EN

Stack Overflow用户

回答已采纳

发布于 2021-07-02 21:22:43

不能用json_normalize设置空列。因此,您要么必须手动设置它们:

代码语言:javascript
运行
复制
import numpy as np
df["nodata.1"] = np.nan
df["nodata.2"] = np.nan

或者将nodata添加到第一个列表项目中,然后加载到熊猫中:

代码语言:javascript
运行
复制
data = [
    {'foo': 'foo_value', 'bar': {'1': 'bar1', '2': 'bar2'}},
    {'foo': 'foo_value_2'}
]

data[0]['nodata'] = {'1': np.nan, '2': np.nan}

pd.json_normalize(data)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68231131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档