python - 使用 python pandas 处理包含嵌套 json 的列

标签 python json pandas dataframe

我有一个带有各种列的pandas df。一列 - myCol - 如下所示:

df

someCol   myCol
a         [{}]
b         [{'X': {'A': "value", 'B': "value"}}]
c         [{}, {}]
d         [{'X': {'A': "value", 'B': "value", 'C': "value"}}]

X 中键值对的最大数量未知:有些行包含所有键值对,有些行仅包含选择内容,有些行为空。我想将 myCol 替换为实际列,根据 X 中键值对的唯一数量,根据需要使用尽可能多的列。所以在这个特定的例子中,我最终会得到:

df

someCol   A       B       C
a         N/A     N/A     N/A
b         value   value   N/A     
c         N/A     N/A     N/A
d         value   value   value

我正在努力想出一个解决这个问题的通用方法,这是必要的,因为我不知道最终需要多少“额外”列。任何想法将不胜感激。

最佳答案

解决方案返回第一个列表和带有键 X 的字典,然后将 None 转换为空字典,最后传递给 DataFrame 构造函数:

d = [{} if pd.isna(x) else x for x in df.pop('myCol').str[0].str.get('X')]
df = df.join(pd.DataFrame(d, index=df.index))
print (df)
  someCol      A      B      C
0       a    NaN    NaN    NaN
1       b  value  value    NaN
2       c    NaN    NaN    NaN
3       d  value  value  value

关于python - 使用 python pandas 处理包含嵌套 json 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59932693/

相关文章:

python - 使用列表理解将列表元素附加到嵌套列表中

python - celery (Redis)结果后端不工作

mysql - 类似 sql 的语句不适用于 JSON

python - 从轮廓内动态计算颜色阈值

python - 如何在 python 中使用 abstractproperty 装饰器强制子类设置属性?

java - 如何在freemarker中通过键值访问json值?

json - Racket 中的 REST API JSON 解析

python - 在 pandas.DataFrame.query() 表达式中使用负数

python - Pandas - 根据值删除单元格

python - 如何根据列数据类型创建不同绘图组