pandas: 元素是转换成DataFrame的列表, 如何将它展开多列?
df=pd.DataFrame(data=[["a","b", [{"name": "Leo", "sex": "man"},{"name":"hazel","sex": "woman"}]],["c","d",[{"name": "jack", "sex": "man"}]]], columns=["A","B","res"])
a = df.set_index(["A","B"])["res"].apply(pd.Series).stack()
aaa = pd.DataFrame(a.to_list(), index=a.index).reset_index()
写成一个需求实现方法
def expand_msg(df: pd.DataFrame, expand_msg: str) -> pd.DataFrame:
"""
展开json列表数据
:param df:
:param expand_msg: 要展开的字段名
:return:
"""
columns = df.columns.to_list()
columns.pop(columns.index(expand_msg))
df = df.set_index(columns)[expand_msg].apply(pd.Series).stack().reset_index(columns)
return df