簡體   English   中英

將具有相同鍵的字典列表轉換為高數據框

[英]Convert List of dictionaries with same keys into a tall dataframe

數據框有一列包含具有相同鍵名的字典列表。 如何將其轉換為高數據框? 數據框如圖所示。

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'}]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM