Как отформатировать вывод файла для фрейма данных pandas? - PullRequest
1 голос
/ 02 ноября 2019

Я пытался вывести файл из фрейма данных Pandas, который выглядит следующим образом, и я пытался записать его в файл, используя другой формат

     codi      Acumulado Ahorro    Prestamo Fondo 1  Prestamo Empresa 1
0    0151           1425.76             28320                0.00
1    2361           1158.49              4100             1200.00
2    2663            737.10              2903              429.00
3    2792            897.75              1950              627.00
4    0737           1266.54              7859                0.00
5    5073            779.00               557              754.00
6    2819           1274.70               958                0.00
7    1558            738.51             10242              676.00
8    4105            695.49              2382                0.00
9    4146           1170.08              8623                0.00
10   0528           1337.17              1042                0.00

Я пытался что-то вроде: df.to_csv(output_file, sep = '|') но вывод такой же, как CSV, но вместо "," я получаю "|"

Я пытаюсь добиться этого вывода:

0E0151
A1425.76|2019|Acumulado Ahorro
A0.00|2019|Prestamo Empresa 1
A28320.00|2019|Prestamo Fondo 1

Где 0E должен быть объединенна число, найденное в столбце codi, затем соедините букву «A» с числом, найденным в столбце Acumulado ahorro, затем символ «|»и имя столбца и т. д.

Как создать этот формат, чтобы его можно было записать в фактический файл?

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Для такого необычного формата файла вам нужна пользовательская процедура записи, например:

1002 *
0 голосов
/ 02 ноября 2019

Я уверен, что вам нужно создать свой собственный форматер. Надеемся, что этот ответ дает некоторые рекомендации.

def format_row(row):
    first_line = f"0E{int(row['codi'])}" + '\n'
    second_line = [f"A{row[el]}|2019|{el}" for el in ['Acumulado Ahorro', 'Prestamo Fondo 1', 'Prestamo Empresa 1']]
    second_line = '\n'.join(second_line)
    return f"{first_line}{second_line}"

format_text = df.apply(format_row, axis=1)

for text in format_text:
    print(text)

Вывод:

0E151
A1425.76|2019|Acumulado Ahorro
A28320.0|2019|Prestamo Fondo 1
A0.0|2019|Prestamo Empresa 1
0E2361
A1158.49|2019|Acumulado Ahorro
A4100.0|2019|Prestamo Fondo 1
A1200.0|2019|Prestamo Empresa 1
...

Вы можете легко сохранить format_text в любой текстовый файл, который вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...