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”在左边,但是你的答案非常容易理解,我可以做这些简单的修复。