Создание таблицы фреймов данных из двух списков, сначала с заголовками, а затем с каждым значением в виде строки в Python

#python #dataframe #sorting #web

#python #фрейм данных #сортировка #веб

Вопрос:

У меня есть два списка, которые я получил с помощью веб-очистки, мой первый список:

 [' RPJ',' TipoEmpresa',' TipoSector', ' NombreEmpresa', ' RUC', ' CIIU',' Ejercicio','TipoInformacion',  ' Trimestre',  ' Moneda', ' MetodoFlujoEfectivo', ' Cuenta', ' DescripcionCuenta', ' Monto1',  ' Monto2', ' Monto3', ' Monto4']
 

И мой второй список:

      '2|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0201|Costo|de|Ventas||-79|-90|0|0',
     '3|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D02ST|Ganancia|(Pérdida)|Bruta|12353|34428|0|0',
     '4|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0302|Gastos|de|Ventas|y|Distribución|0|0|0|0',
     '5|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0301|Gastos|de|Administración|-6992|-12647|0|0',
     '6|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0407|Ganancia|(Pérdida)|de|la|baja|en|Activos|Financieros|medidos|al|Costo|Amortizado|0|0|0|0',
     '7|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0403|Otros|Ingresos|Operativos|36|61|0|0',
     '8|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0404|Otros|Gastos|Operativos|-46|-54|0|0',
     '9|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0412|Otras|ganancias|(pérdidas)|0|0|0|0',
     '10|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D03ST|Ganancia|(Pérdida)|por|actividades|de|operación|5351|21788|0|0']
 

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

введите описание изображения здесь

Я сделал это вручную, но мне нужно добавить, возможно, сто тысяч «строк».

Ответ №1:

Поскольку у вас есть два списка, один с заголовками столбцов, а другой с фактическими данными, вы можете создать словарь значений из списков. Обратите внимание, что я добавил ‘ID’ в заголовки, поскольку вам нужен ‘ID’ в качестве имени столбца в фрейме данных. Затем просто создайте словарь, перебрав строки после разделения их на скалярные значения, и создайте dict.

 headers = ['ID',' RPJ',' TipoEmpresa',' TipoSector', ' NombreEmpresa', ' RUC', ' CIIU',' Ejercicio','TipoInformacion',  ' Trimestre',  ' Moneda', ' MetodoFlujoEfectivo', ' Cuenta', ' DescripcionCuenta', ' Monto1',  ' Monto2', ' Monto3', ' Monto4']
rows = ['1|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D01ST|Ingresos|de|actividades|ordinarias|12432|34518|0|0',
 '2|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0201|Costo|de|Ventas||-79|-90|0|0',
 '3|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D02ST|Ganancia|(Pérdida)|Bruta|12353|34428|0|0',
 '4|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0302|Gastos|de|Ventas|y|Distribución|0|0|0|0',
 '5|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0301|Gastos|de|Administración|-6992|-12647|0|0',
 '6|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0407|Ganancia|(Pérdida)|de|la|baja|en|Activos|Financieros|medidos|al|Costo|Amortizado|0|0|0|0',
 '7|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0403|Otros|Ingresos|Operativos|36|61|0|0',
 '8|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0404|Otros|Gastos|Operativos|-46|-54|0|0',
 '9|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D0412|Otras|ganancias|(pérdidas)|0|0|0|0',
 '10|I00004|SOCIEDADES|ADMINISTRADORAS|DE|FONDOS|DE|INVERSION|||AC|CAPITALES|SOCIEDAD|ADMINISTRADORA|DE|FONDOS|DE|INVERSION|S.A.|20504893295|6599|2014|Anual|Individual|Anual|Soles|Método|Directo|2D03ST|Ganancia|(Pérdida)|por|actividades|de|operación|5351|21788|0|0']

dct = []
for row in rows:
  temp = {}
  for header, v in zip(headers,row.split("|")):
    temp[header] = v
  dct.append(temp)

df = pd.DataFrame(dct, index=[x for x in range(len(dct))])
print(df.head())