Python 使应用返回两个系列

Python 使应用返回两个系列,python,pandas,pandas-apply,Python,Pandas,Pandas Apply,假设我有以下数据帧 id|dict|u col ---+--------- 1{“年龄”:[1,2],“姓名”:[“约翰”,“多伊”]} 2{“年龄”:[3,4],“姓名”:[“foo”,“bar”]} 以及以下 def unnest_dict(行): 年龄=行[“年龄”] 名称=行[“名称”] 返回年龄、姓名 年龄,姓名=df[“dict_col”]。应用(unnest_dict) 这会抛出一个ValueError: ValueError:要解包的值太多(预期为2个) 我可以将返回值包装成

假设我有以下数据帧

id|dict|u col
---+---------
1{“年龄”:[1,2],“姓名”:[“约翰”,“多伊”]}
2{“年龄”:[3,4],“姓名”:[“foo”,“bar”]}
以及以下

def unnest_dict(行):
年龄=行[“年龄”]
名称=行[“名称”]
返回年龄、姓名
年龄,姓名=df[“dict_col”]。应用(unnest_dict)
这会抛出一个ValueError:

ValueError:要解包的值太多(预期为2个)

我可以将返回值包装成一个元组
(年龄、名称)
,但之后我需要像这样循环每个元组

def unnest_dict(行):
.
.
申报表(年龄、姓名)
数据=df[“dict_col”]。应用(unnest_dict)
年龄=[p[0]表示数据中的p]
name=[p[1]表示数据中的p]
印刷品(年龄)
# [[1,2],[3,4]]
印刷品(名称)
#[[“约翰”、“多伊”]、[“福”、“巴”]]
是否有一种方法可以直接从函数中提取序列

注意:这不是同一个问题,因为它是如何分解dict的具体问题-我的问题是关于如何直接从函数返回中提取两个(或更多)序列。提供的示例只是一个示例,可能是任何操作

import pandas as pd

df = pd.DataFrame({'id': [1,2], 'dict_col': [ {"age":[1,2],"name":["john","doe"]}, {"age":[3,4],"name":["foo","bar"]}]})

def unnest_dict(row):
    age = row['dict_col']["age"]
    name = row['dict_col']["name"]
    return {'age': age,'name': name}


result = df.apply(unnest_dict, axis=1, result_type='expand')
age = result['age'].tolist()
name = result['name'].tolist()
print(age)
print(name)
输出:

[[1, 2], [3, 4]]
[['john', 'doe'], ['foo', 'bar']]

不完全一样。我只需要一个函数来返回一个序列,而不是序列中的元素