将两列大熊猫解析为dict

时间:2017-08-26 20:22:02

标签: python pandas

所以,我有一个如下的数据框

firstname,lastname
foo, bar
foo, fooz
bar, foo
foo, bar

我想从这两列创建一个2d dict。 目前,我正在做

d = defaultdict(dict)
first_names = df.firstname.values.tolist()
last_names = df.lastname.values.tolist()
for first, second in zip(first_names, last_names):
    d[first][second] = True

我想知道是否有任何内置方法可以做到这一点"有效地"。

1 个答案:

答案 0 :(得分:0)

您的代码生成此defaultdict

defaultdict(dict, {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}})

你真的需要内部dicts中的布尔值吗?如果没有,groupby()会为您提供相同的信息:

grouped = df.groupby('firstname').lastname.unique().to_dict()

grouped
# {'bar': array(['foo'], dtype=object),
#  'foo': array(['bar', 'fooz'], dtype=object)}

如果你确实需要你创建的确切字典结构,你可以跟进词典理解:

{k:{k2:True for k2 in v} for k, v in grouped.items()}
# {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}}
相关问题