计算字典中项目的实例(Pandas)

2024-03-28 20:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在pandas的一个列中找到10个最常见的项目,基本上类似于使用value_counts()。问题是该列包含字典条目,如下所示:

import pandas as pd
import json
from pandas.io.json import json_normalize
df = pd.read_json('data/world_bank_projects.json')
print(df['mjtheme_namecode'].head())

0    [{'code': '8', 'name': 'Human development'}, {...
1    [{'code': '1', 'name': 'Economic management'},...
2    [{'code': '5', 'name': 'Trade and integration'...
3    [{'code': '7', 'name': 'Social dev/gender/incl...
4    [{'code': '5', 'name': 'Trade and integration'...
Name: mjtheme_namecode, dtype: object

我怎样才能按计数(代码或名称)来订购?在


Tags: and项目nameimportjsonpandasdfvalue
1条回答
网友
1楼 · 发布于 2024-03-28 20:33:23

假设您有以下数据帧:

df = pd.DataFrame({'col1': [[{'code': random.randint(0, 10), 'name': ''.join(random.sample('abcdef', 3))} for _ in range(2)] for _ in range(3)]})

                                                col1
0  [{'code': 1, 'name': 'bfc'}, {'code': 7, 'name...
1  [{'code': 7, 'name': 'cda'}, {'code': 0, 'name...
2  [{'code': 2, 'name': 'fea'}, {'code': 7, 'name...

将此扩展到另一个数据帧:

^{pr2}$

现在您可以轻松地查询这个新的数据帧:

^{3}$

我可以找到您的输入数据,下面是如何将其应用于该数据集:

outdf = pd.DataFrame([val for pair in df['mjtheme_namecode'] for val in pair])
outdf.name.value_counts().nlargest(5)

# Result
Environment and natural resources management    223
Rural development                               202
Human development                               197
Public sector governance                        184
Social protection and risk management           158
Name: name, dtype: int64

相关问题 更多 >