我有一个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']
会得到第二个,但这是特定的,想把这个应用到列。 我怎样才能实现这个目标?
解决方案:
你可以使用 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
如果每个列表中都有多个元素,第二种解决方案可能会很有用