python - 为 pandas.io.json_normalize 提供默认值

标签 python pandas flatten

我有一个字典列表,例如:

dictionary= {'a': 1, 'b':[{'c':2},{'c':3}], 'd' : 'not_relevant_data'}

我想创建一个像这样的DataFrame:

'a' 'c'
 1   2
 1   3

这可以通过 df = json_normalize(data=list_of_dictionaries, record_path = 'b', meta ='a') 来完成.

'b' 时就会出现问题不在其中一本词典中。 dictionary = {'a':4, 'd': 'not_relevant_data'}会导致 KeyError,但我想得到一个像这样的 df:

'a' 'c'
 4   None

有没有办法在 record_path 的情况下提供默认值不存在?有其他方法可以做到这一点吗?

感谢所有帮助。

最佳答案

为了获得所需的输出,您可以创建一个函数,在其中添加所需的行为:

def add_for_missing(d, record_path, wanted_column='c'):
    if record_path not in d:
        return {**d, record_path: [{wanted_column: None}]}
    return d

json_normalize(data=add_for_missing(dictionary, 'b'), record_path = 'b', meta ='a')

输出:

enter image description here

关于python - 为 pandas.io.json_normalize 提供默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59789330/

相关文章:

python - 属性错误 : openai has no attribute Image

python - 将 numpy 矩阵转换为 pyspark rdd

python - 如何优化这个与字符串反转相关的函数?

python - 如何将 pandas 中的数字列转换为带逗号分隔符的字符串?

python - 如何在 pandas 中重新存储而不是分组间隔

python - 使用 Pandas/Python 在给定相应数据的情况下填充 excel 中的列

python - keras.layers.Embedding 的输出形状

kotlin - 如何使用特定策略拼合列表列表

python - 如何使用列索引删除第一列中以特定字符串开头的 Dataframe 行

google-sheets - 如何根据其他单元格上的数据反射(reflect) 1 或 0?