1 回答
TA贡献1807条经验 获得超9个赞
只需json_normalize()直接在系列上使用,然后pandas.concat()将新数据框与现有数据框合并即可:
pd.concat([df, json_normalize(df['Metadata'])])
.drop('Metadata', axis=1)如果您不再需要带有JSON数据结构的旧列,则可以添加一个。
为my_custom_data嵌套字典生成的列将带有my_custom_data.前缀。如果所有的名字在该嵌套的字典中是唯一的,你可以放下一个前缀DataFrame.rename()操作:
json_normalize(df['Metadata']).rename(
columns=lambda n: n[15:] if n.startswith('my_custom_data.') else n)
如果您正在使用其他方法将每个字典值转换为扁平化的结构(例如,使用flatten_json,那么您要使用Series.apply()来处理每个值,然后将每个结果字典作为pandas.Series()对象返回:
def some_conversion_function(dictionary):
result = something_that_processes_dictionary_into_a_flat_dict(dictionary)
return pd.Series(something_that_processes_dictionary_into_a_flat_dict)
然后,您可以将Series.apply()调用结果(将是一个数据帧)连接回原始数据帧:
pd.concat([df, df['Metadata'].apply(some_conversion_function)])
添加回答
举报