1

我有一个带有多个列的 pandas 数据框get_groups_df,但我遇到了这个特定列的问题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']获得第二个,但这是特定的,并且希望将其应用于列。我怎样才能做到这一点?

4

1 回答 1

2

您可以使用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

如果每个列表中有多个元素,第二种解决方案可能会很有用

于 2020-04-23T18:47:43.197 回答