Как сформировать список списков Python
Час добрый
Подскажите пожалуйста как можно создать список списков в Python для следующего набора списков:
name = ['John']
sname = ['Black']
money = ['10', '20', '15']
car = ['red', 'blue', 'white']
car_num = ['221', '152', '612154']
Чтобы получить таблицу вида:
--------------------------------------
name | sname | money| car | car_num |
-------------------------------------
John | Black | 10 | red | 221 |
| | 20 | blue | 152 |
| | 15 | white| 612154 |
--------------------------------------
Т.е. чтобы появился список с этими данными, который можно записать в csv файл при помощи команды пандаса:
df = pd.DataFrame(data, columns=["name","sname","money","car","car_num"])
В списке name и sname всегда будет по 1 элементу, который будет состоять из нескольких слов. К примеру за место John будет записано
name = ['John from NewYork']
В списках money, car, car_num всегда будет равное количество элементов, до 40 шт. (в примере всего лишь 3 накидал)
Так же подскажите пожалуйста как потом сие чудо сохранить в csv, чтобы по итогу появилась таблица из примера
Ответы (1 шт):
Если я правильно понял, что вы хотите:
- находим максимальную длину списков
- добиваем пустыми строками до нужной длины те списки, которые могут быть недостаточно длинными (иначе
Pandasбудет ругаться, что это неправильная таблица)
Хотя не очень понятно, зачем вам один элемент на весь столбец таблицы. Разве что для красоты.
import pandas as pd
name = ['John from NewYork']
sname = ['Black']
money = ['10', '20', '15']
car = ['red', 'blue', 'white']
car_num = ['221', '152', '612154']
max_len = max(map(len, [name, sname, money, car, car_num]))
pad_list = lambda x,n: x + [''] * (n - len(x))
df = pd.DataFrame({
'name': pad_list(name, max_len),
'sname': pad_list(sname, max_len),
'money': money,
'car': car,
'car_num': car_num,
})
df
Вывод:
name sname money car car_num
0 John from NewYork Black 10 red 221
1 20 blue 152
2 15 white 612154