我尝试了几种方法从adress列中提取数据并将其转换为新列
df.head(3)
name Adress
0 Joan {'city': 'Rio', 'district': 'Leme'}
1 Joan {'city': 'Sao Paulo', 'district': 'Bras'}
2 Vincent {'city': 'Recife', 'district': 'Caxanga'}
我使用了所有这些方法,但都不起作用
#reduce(set.union, df_apresentar['address'], set())
#set(df_apresentar['address'].values())
#values = set(df_apresentar['address'][0])
#df_apresentar['endereco'] = df_apresentar.address.apply (lambda x: x.get ('address'))
#df_apresentar['endereco'] = df_apresentar.address.apply (lambda x: x.get ('value'))
我需要这样的东西:
df.head(3)
name Adress city district
0 Joan {} Rio Leme
1 Joan {} Friburgo Bras
2 Vincent {} Recife Caxanga
您还可以使用
Dataframe()
方法和tolist()
方法:最后使用
concat()
方法:现在,如果您打印
newdf
,您将获得:如果需要,使用
drop()
方法:您可以使用
apply(pd.Series)
将地址列dict转换为它们自己的列,并将其与原始df
连接起来:或者,作为一个细微的变化,使用
join
代替concat
您可以使用^{} 将json/dict扩展为列,然后使用^{} 连接回原始数据帧:
请注意,使用
pd.json_normalize()
将json/dict扩展到列比使用.apply(pd.Series())进行扩展要高效得多相关问题 更多 >
编程相关推荐