数据框有一个列作为字典。如何将其转换为列?

时间:2019-03-20 19:17:48

标签: python pandas dictionary data-science

下面的

Df包含由名称,性别和net_salary的字典组成的列。该词典有许多列及其对应的值。我需要将该字典转换为列形式。

 index    columns
 9        {"name": "namo     ", "gender": "MALE", "net_salary":...
 10       {"name": "pappu", "gender": "MALE", "net_salary":...
 11       {"name": "Deepak", "gender": "MALE", "net_sala...
 12       {"name": "Arun", "gender": "MALE", "net_salary...
                                                       {}

我要以这种形式输出。

 index    name    gender       net_salary
 9        namo     MALE          151515
 10       pappu    MALE          151454
 11       Deepak   MALE          42512
 12       Arun     MALE          51654

4 个答案:

答案 0 :(得分:1)

您需要首先对包含字典的列进行切片,然后为这些字典创建一个新的数据框。

columnsList = list(dframe["columns"])
sub_dframe = pd.DataFrame(columnsList)
result = pd.concat([dframe["index"],sub_dframe], axis=1)

答案 1 :(得分:0)

您需要:

df = pd.DataFrame({'columns': [{"name": "namo", "gender": "MALE", "net_salary":151515}, 
                           {"name": "pappu", "gender": "MALE", "net_salary":151454}]}, index=[9,10])


print(df['columns'].apply(pd.Series))

输出:

    name gender  net_salary
9   namo   MALE      151515
10  pappu   MALE      151454

答案 2 :(得分:0)

我会做这样的事情(python 3):

df["name"] = [*map(lambda x: x["name"],df["columns"])]
df["gender"] = [*map(lambda x: x["gender"],df["columns"])]
df["salary"] = [*map(lambda x: x["net_salary"],df["columns"])]

如果麻烦您可以删除原始列。

答案 3 :(得分:0)

解决方案可能是

pd.concat([df,df['columns'].apply(pd.Series)],axis=1).drop('columns',axis=1)