使用dict理解时,很难将dict对象添加到数据帧中。
我有一些代码,我不断收到类型错误:“浮动”对象不是标化的,如果我带打印运行相同的代码,它的工作原理
我的数据框如下:
organisasjonsnummer institusjonellSektorkode
981260546 {'kode': '2100', 'beskrivelse': 'Private aksje'}
913062159 {'kode': '2100', 'beskrivelse': 'Private aksje'}
975931366 {'kode': '2100', 'beskrivelse': 'Private aksje'}
我希望它看起来像这样:
organisasjonsnummer kode beskrivelse
981260546 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 work
sample = [x['kode'] for x in SAMPLE_TEST['institusjonellSektorkode']]
# this works
sample = [print(x['kode']) for x in SAMPLE_TEST['institusjonellSektorkode']]
答案 0 :(得分:1)
我认为数据不是字典,而是列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
答案 1 :(得分:0)
哦,我的...。我发现出了什么问题...。我的数据集有错误。这是我纠正它的方式。...经验教训...下次检查/清洗数据集更好。.
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']]