pandas -- 如何将Series转换为字典

4

现在我有这个系列:

us    2
br    1
be    3
dtype: int64

我该如何获取以下列表:

[ { "country": "us", "value": 2},
  { "country": "br", "value": 1},
  { "country": "be", "value": 3}
]

谢谢


从技术角度来看,如何将一个Series转换为一个字典列表。 - Alexander
1个回答

7
首先创建一个DataFrame,然后使用DataFrame.to_dict
print (s.rename_axis('country').reset_index(name='value').to_dict('records'))
[{'value': 2, 'country': 'us'}, {'value': 1, 'country': 'br'}, {'value': 3, 'country': 'be'}]

DataFrame 通过构造函数创建:

print (pd.DataFrame({'country':s.index, 'value':s.values}).to_dict('records'))
[{'value': 2, 'country': 'us'}, {'value': 1, 'country': 'br'}, {'value': 3, 'country': 'be'}]

使用 列表推导式 的另一种解决方案:

d = [dict(country=x[0], value=x[1]) for x in s.items()]
print (d)
[{'value': 2, 'country': 'us'}, {'value': 1, 'country': 'br'}, {'value': 3, 'country': 'be'}]

这是从piRSquared删除的回答中提取的类似解决方案,使用了Series.items

d = [dict(country=k, value=v) for k, v in s.items()]

1
在推导式中不需要使用 to_dict。当在字典上下文中调用时,Series 将像一个字典一样运作。 - piRSquared

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接