将对象数组转换为数据框而无需循环

时间:2019-03-13 19:08:34

标签: python pandas

这是我的原始数据框。每行都有一封电子邮件和一个地址列表(这里只是街道的代表)。

email                      addresses

somename@gmail.com         [{'street': 'a'}, {'street': 'b'}]
anothername@gmail.com      [{'street': 'c'}]

我希望得到这个结果:

email                         street

somename@gmail.com            'a'
somename@gmail.com            'b'
anothername@gmail.com         'c'

在熊猫中,有没有比遍历数组来创建最后一个数据帧更好的方法了?

1 个答案:

答案 0 :(得分:1)

您可以使用:

df1=pd.DataFrame({'email':df.email.repeat(df.addresses.str.len()),\
                   'addresses':np.concatenate(df.addresses.values)})
df1['street']=df1.pop('addresses').apply(pd.Series)
print(df1)

                   email street
0     somename@gmail.com      a
0     somename@gmail.com      b
1  anothername@gmail.com      c