我有超过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 - 通过相同的索引访问字典键和列表元素以循环并分配值-LMLPHP

最佳答案

首先,除非您使用的是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/

10-16 22:54