Я новичок в python, поэтому вопрос может быть тривиальным.

У меня есть пара списков, содержащих твердые имена и связанные с ними счетчики, образец которых я привожу ниже:

volumes1 = ['Shield', 'Side', 'expHall', 'Funnel', 'gridpiece']

counts1= [3911, 1479, 553, 368, 342]

И вторая пара списков

volumes2 = ['Shield', 'leg', 'Funnel', 'gridpiece','wafer']

counts2= [291, 469, 73, 28, 32]

Обратите внимание, что не все тома присутствуют в каждом списке, и их положение может быть разным.

Я хотел бы получить кадр данных, в котором первый столбец содержит все тома в томах1 и том2, второй столбец — все соответствующие значения в счетчиках1, а третий столбец — все соответствующие значения в счетчиках2.

Если том в первом столбце кадра данных отсутствует в томе1, соответствующее значение во втором столбце устанавливается равным 0, и таким же образом, если том в первом столбце кадра данных отсутствует в томе2, соответствующее значение в третьем столбце установлено значение 0, так что окончательный вывод для значений, которые я предоставил, будет:

| volumes | counts1 | counts2 |

| Shield | 3911 | 291 |

| Side | 1479 | 0 |

| expHall | 553 | 0 |

| Funnel | 368 | 73 |

| gridpiece | 342 | 28 |

| leg | 0 | 469 |

| wafer | 0 | 32 |

Я не очень разбираюсь в python, и я много боролся безрезультатно, есть ли способ получить то, что я хочу, быстро и элегантно?

Благодарность

1
saimon 25 Ноя 2022 в 21:48

1 ответ

import pandas as pd


d={   'volumes1':['Shield', 'Side', 'expHall', 'Funnel', 'gridpiece'],
      'counts1':[3911, 1479, 553, 368, 342],
      'counts2':[291, 469, 73, 28, 32]

    }
df = pd.DataFrame(data=d)
print(df)

См. https://pandas.pydata.org/docs/reference/api /pandas.DataFrame.html

0
user13322060 25 Ноя 2022 в 22:07