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)])
添加回答
舉報