【问题标题】:Dealing with columns containing nested json using python pandas使用 python pandas 处理包含嵌套 json 的列
【发布时间】:2020-01-27 14:02:23
【问题描述】:

我有一个pandas df,其中包含各种列。一列 - myCol - 看起来像这样:

df

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

X 中 key-val 对的最大数量未知:有些行包含所有这些,有些只包含一个选择,有些是空的。我想用实际的列替换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

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

【问题讨论】:

标签: python json pandas dataframe


【解决方案1】:

解决方案返回第一个列表和带有键 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

【讨论】:

  • 谢谢。如果值是 TrueFalse 而不是 "value",我该如何调整您的答案?
  • @CHRD - 我认为没有改变。
  • 没错,没关系。非常感谢!
猜你喜欢
  • 2016-05-06
  • 2020-01-04
  • 2014-04-15
  • 2020-12-14
  • 2017-06-19
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多