我有一个带有各种列的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/