'NoneType' 对象在 OrderedDict 中不可订阅 - pandas 数据框
'NoneType' object is not subscriptable within OrderedDict - pandas dataframe
我正在尝试将有序字典中的信息提取到 pandas 数据框中。有序字典来自对数据库的查询。为了将信息上传回数据库并对其进行操作,我需要它采用 pandas 数据帧格式。
我一直在用下面的方法把有序的字典变成pd.DataFrame
:
有序字典示例:
x = [OrderedDict([('attributes',
OrderedDict([('type', 'User'),
('url',
'/services/data/v38.0/sobjects/User/0051300000C2dczAAB')])),
('Id', '0051300000C2dczAAB'),
('UserRole',
OrderedDict([('attributes',
OrderedDict([('type', 'UserRole'),
('url',
'/services/data/v38.0/sobjects/UserRole/00E1B000002DT6bUAG')])),
('Name', 'Platform NA')]))]),
OrderedDict([('attributes',
OrderedDict([('type', 'User'),
('url',
'/services/data/v34.0/sobjects/User/005a0000007oQYSST2')])),
('Id', '005a0000007oQYSST2'),
('UserRole', None)])]
df = pd.DataFrame(
dict(Id = rec['Id'],
UserRole = rec['UserRole']['Name']) for rec in x)
这一直工作得很好,除非我有一个没有基础记录的记录(在这个例子中)UserRole
。我收到错误 'NoneType' object is not subscriptable
,因为我试图从 OrderedDict
即 x['UserRole']
中提取 ['Name']
。我已经尝试创建另一个生成器来将其拉出,或者创建一个 for 循环但没有成功。这个例子有两个特征,我的真实数据集有 10 多个特征,其中一些特征(不是全部)都有 None 记录。
非常感谢任何帮助!
你可以有一个辅助功能。
def helper(x, attribute):
return None if x is None else x[attribute]
df = pd.DataFrame(
dict(Id = rec['Id'],
UserRole = helper(rec['UserRole'], "Name")) for rec in x)
我正在尝试将有序字典中的信息提取到 pandas 数据框中。有序字典来自对数据库的查询。为了将信息上传回数据库并对其进行操作,我需要它采用 pandas 数据帧格式。
我一直在用下面的方法把有序的字典变成pd.DataFrame
:
有序字典示例:
x = [OrderedDict([('attributes',
OrderedDict([('type', 'User'),
('url',
'/services/data/v38.0/sobjects/User/0051300000C2dczAAB')])),
('Id', '0051300000C2dczAAB'),
('UserRole',
OrderedDict([('attributes',
OrderedDict([('type', 'UserRole'),
('url',
'/services/data/v38.0/sobjects/UserRole/00E1B000002DT6bUAG')])),
('Name', 'Platform NA')]))]),
OrderedDict([('attributes',
OrderedDict([('type', 'User'),
('url',
'/services/data/v34.0/sobjects/User/005a0000007oQYSST2')])),
('Id', '005a0000007oQYSST2'),
('UserRole', None)])]
df = pd.DataFrame(
dict(Id = rec['Id'],
UserRole = rec['UserRole']['Name']) for rec in x)
这一直工作得很好,除非我有一个没有基础记录的记录(在这个例子中)UserRole
。我收到错误 'NoneType' object is not subscriptable
,因为我试图从 OrderedDict
即 x['UserRole']
中提取 ['Name']
。我已经尝试创建另一个生成器来将其拉出,或者创建一个 for 循环但没有成功。这个例子有两个特征,我的真实数据集有 10 多个特征,其中一些特征(不是全部)都有 None 记录。
非常感谢任何帮助!
你可以有一个辅助功能。
def helper(x, attribute):
return None if x is None else x[attribute]
df = pd.DataFrame(
dict(Id = rec['Id'],
UserRole = helper(rec['UserRole'], "Name")) for rec in x)