Python潘达斯数据框架将特定的键从列内的dict中剥离出来。

我有一个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

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

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Verilog for loop使用oasys合成失败。

2022-5-14 9:00:18

解决方案

Android Studio - 更新后渲染设计无法正常工作

2022-5-14 10:00:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索