为了账号安全,请及时绑定邮箱和手机立即绑定

使用列表理解将 dict 添加到数据框对象时出错

使用列表理解将 dict 添加到数据框对象时出错

至尊宝的传说 2021-10-26 18:34:25
使用 dict 理解时无法将 dict 对象添加到数据帧。我有一些代码,我不断收到 TypeError: 'float' object is not subscriptable on,如果我用 print 运行相同的代码,它就可以工作我拥有的数据框如下所示:organisasjonsnummer institusjonellSektorkode981260546           {'kode': '2100', 'beskrivelse': 'Private aksje'}913062159           {'kode': '2100', 'beskrivelse': 'Private aksje'}975931366           {'kode': '2100', 'beskrivelse': 'Private aksje'}我希望它看起来像这样:organisasjonsnummer kode          beskrivelse981260546           2100        'Private aksje'913062159           2100        'Private aksje'975931366           2100        'Private aksje'所以我试图像这样附加到数据框,但我无法让它工作......Dataframe_test['kode'] = [x.get('kode') for x in Dataframe_test['institusjonellSektorkode']]# This doesn't worksample = [x['kode'] for x in SAMPLE_TEST['institusjonellSektorkode']]# this workssample = [print(x['kode']) for x in SAMPLE_TEST['institusjonellSektorkode']]
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我认为数据不是字典,而是列中的字符串institusjonellSektorkode,所以需要ast.literal_eval在列表理解之前转换它们,创建新的DataFrame并加入原始的。功能pop是提取列:


import ast


df1 = pd.DataFrame([ast.literal_eval(x) for x in df.pop('institusjonellSektorkode')])

print (df1)

     beskrivelse  kode

0  Private aksje  2100

1  Private aksje  2100

2  Private aksje  2100


df = df.join(df1)

print (df)

   organisasjonsnummer    beskrivelse  kode

0            981260546  Private aksje  2100

1            913062159  Private aksje  2100

2            975931366  Private aksje  2100


查看完整回答
反对 回复 2021-10-26
?
心有法竹

TA贡献1866条经验 获得超5个赞

哦,我的......我发现出了什么问题......我的数据集中有一个错误。这就是我纠正它的方式......吸取教训......下次更好地检查/清洗数据集......


import numpy as np


# Simple function to that returns a NaN if it is not fed a dict as an input.

def get_value(dict, string_to_get):

    '''

    takes input of dict, and tries to return the value of the string, if it fails

    it will return null value

    '''

    try:

        get_string = dict.get(string_to_get)

        return get_string

    except:

        return np.nan


Dataframe_test['kode'] = [get_value(x,'kode') for x in Dataframe_test['institusjonellSektorkode']]


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信