#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())