【问题标题】:transform a series-type column into another dataframe将系列类型的列转换为另一个数据框
【发布时间】:2022-01-02 09:40:46
【问题描述】:

我有一个rest api返回我一些数据,其中一些是链接格式的,所以我调用这个链接并将它全部存储在一个数据框中,但是我需要从这些列表中删除一些值并连接使用数据框,有人知道这样做的方法吗?

 response = requests.get(url,auth=(usr,psw),headers=headers)
 df = pd.DataFrame(response.json()['result']) 
 def get_data_from_link (data):
 return requests.get(data['link'],auth=(usr,psw),headers=headers).json()

 df['assignment_group_response']=df['assignment_group'].apply(get_data_from_link)

我需要转换的列

0      {'result': {'attested_date': '', 'skip_sync': ...
1      {'result': {'attested_date': '', 'skip_sync': ...
2      {'result': {'attested_date': '', 'skip_sync': ...

【问题讨论】:

  • 你的问题有点不清楚。 “这些清单”包含什么?它已经是数据框的一部分了吗?预期的最终输出是什么样的?
  • 没错,列表已经是数据框列的一部分,我要做的是将其中存在的“名称”字段转换为数据框中的列

标签: python pandas dataframe api


【解决方案1】:

使用链接获取数据后的初始数据框:

    assignment_group_response
0   {'name': 'abc', 'extra': {'value': 123}}
1   {'name': 'def', 'extra': {'value': 456}}
2   {'name': 'xyz', 'extra': {'value': 789}}

现在,我将创建新列并从嵌套字典中获取值

df["name"] = df["assignment_group_response"].apply(lambda x: x["name"])
df["extra"] = df["assignment_group_response"].apply(lambda x: x["extra"])
df["value"] = df["assignment_group_response"].apply(lambda x: x["extra"]["value"])

添加列后,数据框将如下所示:

                   assignment_group_response   name         extra   value
0   {'name': 'abc', 'extra': {'value': 123}}    abc {'value': 123}  123
1   {'name': 'def', 'extra': {'value': 456}}    def {'value': 456}  456
2   {'name': 'xyz', 'extra': {'value': 789}}    xyz {'value': 789}  789

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 2022-08-13
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多