Python 将两列pandas解析为dict
所以,我有一个如下的数据帧Python 将两列pandas解析为dict,python,pandas,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_nam
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
我想知道是否有任何内置的方法可以“有效地”执行此操作。您的代码生成此
defaultdict
:
defaultdict(dict, {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}})
您真的需要内部目录中的布尔值吗?否则,groupby()
将为您提供相同的信息:
grouped = df.groupby('firstname').lastname.unique().to_dict()
grouped
# {'bar': array(['foo'], dtype=object),
# 'foo': array(['bar', 'fooz'], dtype=object)}
如果您确实需要您创建的确切的dict结构,您可以继续进行dict理解:
{k:{k2:True for k2 in v} for k, v in grouped.items()}
# {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}}
您的代码生成此
defaultdict
:
defaultdict(dict, {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}})
您真的需要内部目录中的布尔值吗?否则,groupby()
将为您提供相同的信息:
grouped = df.groupby('firstname').lastname.unique().to_dict()
grouped
# {'bar': array(['foo'], dtype=object),
# 'foo': array(['bar', 'fooz'], dtype=object)}
如果您确实需要您创建的确切的dict结构,您可以继续进行dict理解:
{k:{k2:True for k2 in v} for k, v in grouped.items()}
# {'bar': {'foo': True}, 'foo': {'bar': True, 'fooz': True}}
zip(df.firstname,df.lastname)
正常,无需执行.values.tolist()
zip(df.firstname,df.lastname)
正常,无需执行.values.tolist()
。