Создать фрейм данных, используя список и словари - PullRequest
1 голос
/ 25 февраля 2020
Device = [D1,D2]
out1=[42,145]
out2 = [0,1]
data = [{'A': '0.3%','B':'0.5%','C':'0.6%'},{'A': '1.3%','B':'2.5%','C':'0.6%'}]

Я ХОЧУ, КАК ВЫХОД:

Device   output     data
D1        42/0      0.3%/0.5%/0.6%
D2        145/1     1.3%/2.5%/0.6%

Итак, вывод должен быть в формате out1 [0] / out2 [0] и out1 [1] / out2 [1] и столбец данных должен быть в формате данных [0] ['A'] / данных [0] ['B'] / данных [0] ['C']

PLease help

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Это один из подходов.

Пример:

Device = ["D1","D2"]
out1=[42,145]
out2 = [0,1]
data = [{'A': '0.3%','B':'0.5%','C':'0.6%'},{'A': '1.3%','B':'2.5%','C':'0.6%'}]



df = pd.DataFrame({'Device': Device,
                   'output': ["{}/{}".format(*i) for i in zip(out1, out2)],
                   'data': ["/".join(i.values()) for i in data]})
print(df)

Выход:

  Device output            data
0     D1   42/0  0.3%/0.5%/0.6%
1     D2  145/1  1.3%/2.5%/0.6%
0 голосов
/ 25 февраля 2020

Изображение кода Вывод кода

Device = ['D1','D2']
out1=[42,145]
out2 = [0,1]
data = [{'A': '0.3%','B':'0.5%','C':'0.6%'},{'A': 
         '1.3%','B':'2.5%','C':'0.6%'}]
list1=[];list2=[]
for i in range(len(out1)):list1.append(str(out1[i])+"/"+str(out2[i]))
for i in range(len(data)):                                 
    list2.append(data[i]['A']+'/'+data[i]['B']+'/'+data[i]['C'])
list3={Device[0]:list1,Device[1]:list2}
df=pd.DataFrame(list3,index=[Device[0],Device[1]])
df.rename(columns={Device[0]:'output',Device[1]:'data'},inplace=True);df.rename_axis(index='Device')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...