Python 如何格式化数据帧的文件输出?

Python 如何格式化数据帧的文件输出?,python,pandas,file,Python,Pandas,File,我一直在尝试从一个看起来像这样的熊猫数据框输出一个文件,我一直在尝试使用不同的格式将其写入一个文件 codi Acumulado Ahorro Prestamo Fondo 1 Prestamo Empresa 1 0 0151 1425.76 28320 0.00 1 2361 1158.49 4100 1200

我一直在尝试从一个看起来像这样的熊猫数据框输出一个文件,我一直在尝试使用不同的格式将其写入一个文件

     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(输出_文件,sep='|')
但是输出就像一个csv,而不是“I get”|

我正在努力实现以下输出:

0E0151
A1425.76|2019|Acumulado Ahorro
A0.00|2019|Prestamo Empresa 1
A28320.00|2019|Prestamo Fondo 1
其中0E必须连接到列
codi
中的数字,然后将字母“A”连接到列
Acumulado ahorro
中的数字,然后连接字符“|”和列的名称,依此类推


如何创建此格式以便将其写入实际文件?

对于这种不寻常的文件格式,您需要自定义写入例程,例如:

with open("output.txt", "w") as file:
    for i in range(len(df)):
        file.write("0E" + str(df["codi"][i]) + "\n")
        for c in list(df.columns.values[1:]):
            file.write("A" + str(df[c][i]) + "|2019|" + c + "\n")

我非常确定您必须创建自己的自定义格式化程序。希望这个答案能提供一些指导

def格式_行(行):
第一行=f“0E{int(行['codi'])}”+'\n
第二行=[f“A{row[el]}2019{el}”代表['Acumulado Ahorro'、'Prestamo Fondo 1'、'Prestamo Empresa 1']中的el]
第二行='\n'。连接(第二行)
返回f“{first_line}{second_line}”
格式文本=df.apply(格式行,轴=1)
对于格式为\u 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\u text
保存到您想要的任何文本文件中

为什么不迭代数据帧并以您需要的格式保存数据?是的,最好的方法是以您需要的格式获取数据帧,然后输出它,因为我使用了pandas数据框,使它看起来像是来自3个不同的地方,并且用了我一生的时间来格式化它,正如你所看到的,我正在学习。不能像这样实现,因为它不是来自一个单独的文件,我实际上从代码中的不同来源构建了这个数据框,我想我必须澄清一下,对于初学者来说,我很抱歉:(这是一个非常棒的实现,而且很容易理解,我没有意识到我还需要对数据帧做进一步的工作,比如总是有2个小数,让codi列成为一个字符串,因为我想保留“0”在左边,但是你的答案非常容易理解,我可以做这些简单的修复。