python - 将具有相同键的字典列表转换为高数据框

标签 python pandas

数据框有一列包含具有相同键名的字典列表。我怎样才能将它转换成一个高的数据框?数据框如图所示。

A       B
1   [{"name":"john","age":"28","salary":"50000"},{"name":"Todd","age":"36","salary":"54000"}]
2   [{"name":"Alex","age":"48","salary":"70000"},{"name":"Mark","age":"89","salary":"150000"}]
3   [{"name":"jane","age":"36","salary":"20000"},{"name":"Rose","age":"28","salary":"90000"}

如何将以下数据框转换为以下数据框

A    name   age    salary
1    john   28     50000
1    Todd   36     54000
2    Alex   48     70000
2    Mark   89     150000
3    jane   36     20000
3    Rose   28     90000

最佳答案

您正在寻找unesting首先,使用我之前提供的相同方法。

newdf=unnesting(df,['B'])
pd.concat([newdf,pd.DataFrame(newdf.pop('B').tolist(),index=newdf.index)],axis=1)
   A age  name  salary
0  1  28  john   50000
0  1  36  Todd   54000
1  2  48  Alex   70000
1  2  89  Mark  150000
2  3  36  jane   20000
2  3  28  Rose   90000
<小时/>

更多信息我已附上我的自定义功能,您也可以在我链接的页面中找到它

def unnesting(df, explode):
    idx=df.index.repeat(df[explode[0]].str.len())
    df1=pd.concat([pd.DataFrame({x:np.concatenate(df[x].values)} )for x in explode],axis=1)
    df1.index=idx
    return df1.join(df.drop(explode,1),how='left')

数据输入

df.B.to_dict()
{0: [{'name': 'john', 'age': '28', 'salary': '50000'}, {'name': 'Todd', 'age': '36', 'salary': '54000'}], 1: [{'name': 'Alex', 'age': '48', 'salary': '70000'}, {'name': 'Mark', 'age': '89', 'salary': '150000'}], 2: [{'name': 'jane', 'age': '36', 'salary': '20000'}, {'name': 'Rose', 'age': '28', 'salary': '90000'}]}

关于python - 将具有相同键的字典列表转换为高数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282995/

相关文章:

python - OpenAI GPT-3 API : Why do I get different, 每次都对同一个问题进行不相关的随机响应?

c# - 用于 Unity3d 5.x 的极简主义 Python 服务器

python - 提高 python 代码的性能,旨在使用大型数据集查找特定区间内的数字

python - 使用 tensorflow ,如何平均多个批处理的参数梯度值并使用该平均值进行更新?

python - Jupyter 中 Pandas 自动补全的问题

python - 如何从字典中替换数据框列中的特定值?

python - 按集群拆分 bam,然后使用检查点按集群合并 bam

python - 如何在 scikit 学习列选择器管道中只选择几列?

python - 从组中的另一行获取值

python - 如何在 Streamlit 中更改 pandas 数据框中行的颜色?