我有超过15个数据框和一个列表。给定以下示例
unit_list = ['%','umol/l','mmol/l','mmol/l','g/dL','mmol/l','umol/l','','mg/mmol','mg/L','','mg/mmol','g/L'
'g/day','','mg/L','','mg/day','','mmol/l','','cells/uL','','','cells/uL']
#TWO DATAFRAME for sample
dataframesdict[hbA1c] = pd.DataFrame({'person_id':[1,2,3],'Date': ['2009-01-05 00:00:00','2009-01-05 00:00:00','2013-01-31 00:00:00'],'Value': [9.6,9.6,10]})
dataframesdict[Creatinine] = pd.DataFrame({'person_id':[1,2,3],'Date': ['2119-01-05 00:00:00','2129-01-05 00:00:00','2113-01-31 00:00:00'],'Value': [19.6,29.6,210]})
我想做的是在
unit
下的每个数据框中创建一个名为dataframesdict
的新列,并填充unit_list
中的值我已经订购了
unit_list
,因此应将unit_list
中的第0个元素填充为unit
中第0个键(第0个数据帧)下的dataframesdict
列的值类似地
dataframesdict[1]['unit] = unit_list[1]
我尝试了以下内容,但由于使用Index作为键,因此无法正常工作。
for i in range(len(key_list)):
dataFramesDict[i]['unit'] = unit_list[i]
如何使用索引同时访问和分配值?下面的屏幕截图显示了预期的输出。 Hba1c是dict中的第一个索引项,因此unit_list中对应的第一个索引项将作为值填充到数据帧的“ unit”列中
最佳答案
首先,除非您使用的是python 3.6 =>,否则dict
不能保证您的订单。用词来说,hdA1c
并不总是第一个键。
如果要维护订单,请使用collections.OrderedDict
。
至于实际的问题,enumerate
会做:
for i, (k, v) in enumerate(dataframesdict.items()):
v['unit'] = unit_list[i]
print(dataframesdict['hbA1c'])
输出:
Date Value person_id unit
0 2009-01-05 00:00:00 9.6 1 %
1 2009-01-05 00:00:00 9.6 2 %
2 2013-01-31 00:00:00 10.0 3 %
关于python - 通过相同的索引访问字典键和列表元素以循环并分配值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57283160/