Python 如何从数据集的复杂列中生成字典?
因此,我的数据集中有一个column=Test\u标签。(请参见屏幕截图1以查看专栏的部分内容) 我正试着为每一行编一本字典。 我想要的列表,我相信每一行应该是这样的 比如说。下面是我的专栏Python 如何从数据集的复杂列中生成字典?,python,list,dictionary,Python,List,Dictionary,因此,我的数据集中有一个column=Test\u标签。(请参见屏幕截图1以查看专栏的部分内容) 我正试着为每一行编一本字典。 我想要的列表,我相信每一行应该是这样的 比如说。下面是我的专栏 1 None 2
1 None
2 None
3 None
4 None
5 COMP=off,CONTROLLER=4310
6 TEMP=25,SOAK=15,CONTROLLER=4310
7 DSA=1,HSDIG=0
8 VBAT=3.00,BGSEL=typ,CMON=none,POWER_MODE=buck,REVISION=ac,TEST=copy_settings,CS=bb
9 REVISION=ac,TEST=copy_settings,CS=bb
13 REVISION=ac,TEST=copy_settings,CS=bb
这是我刚刚用数据创建的列表。我认为这将有助于复制到IDE
[['None'],
['None'],
['None'],
['COMP=off,CONTROLLER=4310'],
['TEMP=25,SOAK=15,CONTROLLER=4310'],
['DSA=1,HSDIG=0'],
['VBAT=3.00,BGSEL=typ,CMON=none,POWER_MODE=buck,REVISION=ac,TEST=copy_settings,CS=bb'],
['REVISION=ac,TEST=copy_settings,CS=bb'],
['REVISION=ac,TEST=copy_settings,CS=bb']]
对于上面的列,我想要的字典在每一行都是这样的
{'None': 1}
{'None': 1}
{'None': 1}
{'COMP': 'off', 'CONTROLLER'=4310}
{'TEMP': 25, 'SOAK' : 15,'CONTROLLER' :4310 }
{'REVISION': 'ac', 'TEST':'copy_settings','CS':'bb' }
{'REVISION': 'ac', 'TEST':'copy_settings','CS':'bb' }
def custom_parse(row):
if not row or row == 'None':
return {'None': 1}
else:
split = row.split(',')
out = {}
for item in split:
k, v = item.split('=')
out[k] = v
return out
df['a'].apply(custom_parse)
1 {'None': 1}
2 {'None': 1}
3 {'None': 1}
4 {'None': 1}
5 {'COMP': 'off', 'CONTROLLER': '4310'}
6 {'SOAK': '15', 'TEMP': '25', 'CONTROLLER': '43...
7 {'HSDIG': '0', 'DSA': '1'}
8 {'REVISION': 'ac', 'CS': 'bb', 'VBAT': '3.00',...
9 {'REVISION': 'ac', 'CS': 'bb', 'TEST': 'copy_s...
13 {'REVISION': 'ac', 'CS': 'bb', 'TEST': 'copy_s...
尽管如此,我不能像上面那样创建我的dict。
我也在这里发布我的代码
# Create an empty list
Row_list =[]
# Iterate over each row
for rows in Dataframe.itertuples():
# Create list for the current row
my_list =[rows.Test_Label]
# append the list to the final list
Row_list.append(my_list)
res = []
for list in Row_list:
res.append(str(list[0]).split(','))
new = []
for l in res:
new.append([x.split('=') for x in l)
new
A2 = [(element + [1])[:7] for element in new]
A2
dict(A2)
TypeError: unhashable type: 'list'
有人能帮我吗?我们可以创建一个函数来解析每一行,然后
将该函数应用到每一行
{'None': 1}
{'None': 1}
{'None': 1}
{'COMP': 'off', 'CONTROLLER'=4310}
{'TEMP': 25, 'SOAK' : 15,'CONTROLLER' :4310 }
{'REVISION': 'ac', 'TEST':'copy_settings','CS':'bb' }
{'REVISION': 'ac', 'TEST':'copy_settings','CS':'bb' }
def custom_parse(row):
if not row or row == 'None':
return {'None': 1}
else:
split = row.split(',')
out = {}
for item in split:
k, v = item.split('=')
out[k] = v
return out
df['a'].apply(custom_parse)
1 {'None': 1}
2 {'None': 1}
3 {'None': 1}
4 {'None': 1}
5 {'COMP': 'off', 'CONTROLLER': '4310'}
6 {'SOAK': '15', 'TEMP': '25', 'CONTROLLER': '43...
7 {'HSDIG': '0', 'DSA': '1'}
8 {'REVISION': 'ac', 'CS': 'bb', 'VBAT': '3.00',...
9 {'REVISION': 'ac', 'CS': 'bb', 'TEST': 'copy_s...
13 {'REVISION': 'ac', 'CS': 'bb', 'TEST': 'copy_s...
嘿,非常感谢你,我理解你的代码。我还有一个小查询,如果我的任何一行有键但没有字典的值,会发生什么情况。例如上面的“``COMP,CONTROLLER=4310```我没有任何键COMP的值。再次感谢。如果它不存在,值应该是多少?另外,如果您理解代码,那么修改代码和添加额外的条件应该相对容易,对吗?