Python-Pandas数据帧从列中列表内的dict中剥离了一个特定的键



我有一个名为get_groups_df的panda数据帧,它有几个列,但我对这个特定的列links有问题。似乎在这一列中,每一行都是一个列表,里面有一个字典,如下所示:

get_groups_df.links[0:]
0    [{'action': 'GET', 'href': 'https://api.mysource.com/groups/asdfadsfa/users', 'type': 'application/json', 'rel': 'users'}]
1    [{'action': 'GET', 'href': 'https://api.mysource.com/groups/eweasdxcv/users', 'type': 'application/json', 'rel': 'users'}]
2    [{'action': 'GET', 'href': 'https://api.mysource.com/groups/aeasdfse/users', 'type': 'application/json', 'rel': 'users'}]
3    [{'action': 'GET', 'href': 'https://api.mysource.com/groups/asfesfsas/users', 'type': 'application/json', 'rel': 'users'}]

我的目标是提取'href'部分,这样剩下的就是https...部分,如下所示:

df['links']
links
0 https://api.mysource.com/groups/asdfadsfa/users 
1 https://api.mysource.com/groups/eweasdxcv/users
2 https://api.mysource.com/groups/aeasdfse/users 
3 https://api.mysource.com/groups/asfesfsas/users

我知道如何提取一个像get_groups_df.links[0][0]['href']get_groups_df.links[1][0]['href']这样的单个,会得到第二个,但这是特定的,我想将其应用于列。我怎样才能做到这一点?

您可以使用str访问器,如:

get_groups_df['links'].str[0].str['href']

其中[0]表示每行列表中的第一个元素,而不是行号

或者,您可以使用explode删除类似列表的单元格,然后根据结果创建数据帧:

pd.DataFrame(get_groups_df['links'].explode().tolist())['href']

两者都给出

0    https://api.mysource.com/groups/asdfadsfa/users
1    https://api.mysource.com/groups/eweasdxcv/users
2     https://api.mysource.com/groups/aeasdfse/users
Name: href, dtype: object

如果每个列表中有一个以上的元素,那么第二种解决方案可能是有用的

最新更新