创建一个新的数据帧,添加列dict as head中的每个键

2024-10-04 01:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它包含一个带有字典的列。在

我想在DataFrame中为在包含dict的列中的每个元素上找到的每个键添加一个新的头,分配给这些新单元格的每个新值都应该对应于None,如果该元素不包含该头键,则对应于相应的键值。在

以下是测试和可视化我所说的内容的数据:

导入依赖项:

import pandas as pd
import numpy as np

创建包含内部词典列表的词典:

^{pr2}$

为测试创建适当的初始数据帧:

df = pd.DataFrame.from_dict(data)
df

手动说明我想要的输出:

data2 = {'string_info': ['User1', 'User2', 'User3'],
        'elm1': ['attr5',None,'attr23'],
        'elm2': ['attr9',None,'attr33'],
        'elm3': ['attr33',None,None],
        'elm4': [None,None,None],
        'elm5': [None,'attr31',None],
        'elm6': [None,None,'attr33'],
        'elm7': [None,None,'attr13'],
        'int_info': [4, 24, 31]}

预期输出为:

df2 = pd.DataFrame.from_dict(data2)
df2

谢谢!在


Tags: 数据fromimportinfonone元素dataframedf
1条回答
网友
1楼 · 发布于 2024-10-04 01:29:13

您可以使用^{}DataFrame构造函数将dict替换为列:

print (pd.DataFrame(df.dict_info.values.tolist()))
     elm1    elm2    elm3    elm5    elm6    elm7
0   attr5   attr9  attr33     NaN     NaN     NaN
1     NaN     NaN     NaN  attr31     NaN  attr13
2  attr23  attr33     NaN  attr28  attr33     NaN

print (pd.concat([pd.DataFrame(df.dict_info.values.tolist()),
                  df[['int_info','string_info']]], axis=1))
     elm1    elm2    elm3    elm5    elm6    elm7  int_info string_info
0   attr5   attr9  attr33     NaN     NaN     NaN         4       User1
1     NaN     NaN     NaN  attr31     NaN  attr13        24       User2
2  attr23  attr33     NaN  attr28  attr33     NaN        31       User3

如果需要Nones添加^{}

^{pr2}$

相关问题 更多 >