我有一个名为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
如果每个列表中有一个以上的元素,那么第二种解决方案可能是有用的