Pandas列的类型为 list 。
df['size'][0] = [{'Name': 'Total', 'Value': 50, 'Unit': 'Units'}]
type(df['Size'][0])
list
我想将列表转换成字典。即type(df['Size'][0]) dict
。
{'Name': 'Total',
'Value': 50,
'Unit': 'Units'}
对于上下文,我试图将字典解析成多列。
# Unpack Size
for i, row in df.iterrows():
if type(row['Size'][i]) is dict:
dict_obj = row['Size'][i]
for key, val in dict_obj.items():
if key == 'Name':
df.loc[index, 'Size_Name'] = val
if key == 'Value':
df.loc[index, 'Size_Value'] = val
if key == 'Unit':
df.loc[index, 'Size_Unit'] = val
答案 0 :(得分:1)
可以有n个字典。
列表中包含任意数量的词典时,请使用df.explode
df = pd.DataFrame({'size':[[{'a':1},{'b':1}],[{'a':2}],[{'c':2},{'d':2},{'e':4}]]})
df
size
0 [{'a': 1}, {'b': 1}]
1 [{'a': 2}]
2 [{'c': 2}, {'d': 2}, {'e': 4}]
df.explode('size')
size
0 {'a': 1}
0 {'b': 1}
1 {'a': 2}
2 {'c': 2}
2 {'d': 2}
2 {'e': 4}
如果它始终是一本词典的列表,即df['size'][x] = [{...}]
,请使用itertools.chain.from_iterable
from itertools import chain
df['size'] = list(chain.from_iterable(df['size']))
答案 1 :(得分:0)
如果有:
df['size'][0] = [{'Name': 'Total', 'Value': 50, 'Unit': 'Units'}]
type(df['Size'][0])
list
您应该使用:
type(df['Size'][0][0])
dict
如果列表中有多个词典,请增加最后一个索引以访问其余词典。