如何使用模式强制熊猫添加只包含NaN值的额外列。我的数据格式化为JSON记录,但是当一个字段不存在于记录中时,它在JSON表示中没有键,而不是一个NaN值。对于我希望拥有的模式中的某些列,在任何记录中都没有它的数据,因此它不会出现在JSON对象中,而且pd.json_normalize也不会为它创建一个列。如何强制pd.json_normalize的结果根据模式拥有所有列,如果该列没有可用的数据,则拥有一个包含所有NaN的列。
下面是我所拥有的数据和所需格式的示例:
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,我得到:
>>> pd.json_normalize(data)
foo bar.1 bar.2
0 foo_value bar1 bar2
1 foo_value_2 NaN NaN相反,我想得到:
foo bar.1 bar.2 nodata.1 nodata.2
0 foo_value bar1 bar2 NaN NaN
1 foo_value_2 NaN NaN NaN NaN我该怎么做?
发布于 2021-07-02 21:22:43
不能用json_normalize设置空列。因此,您要么必须手动设置它们:
import numpy as np
df["nodata.1"] = np.nan
df["nodata.2"] = np.nan或者将nodata添加到第一个列表项目中,然后加载到熊猫中:
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)https://stackoverflow.com/questions/68231131
复制相似问题