gpt4 book ai didi

python - 使用 FORTRAN 格式字符串将 Pandas DataFrame 写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:39 25 4
gpt4 key购买 nike

我想使用 FORTRAN 格式字符串将 pandas 数据框写入文件。除了讨论此功能的优点外,我无法在网上找到任何内容。有谁知道这是否可能?

我想我不需要使用 Fortran 格式的字符串...我只需要获取 Fortran 可以轻松读取的特定格式的输出文件。

更新:例如,我有一个具有特定 Fortran 格式的大型数据文件。我将文件加载到我的 python 函数中,处理数据,然后想将处理后的数据导出到一个与原来格式相同的文件中。文件格式的示例类似于:

FORMAT (1X,F12.6,2F9.6,F11.7,T61,2F9.6,F10.7,T142,I6,1X,A2,T236,A1)

我需要以特定格式导出数据的原因是因为输出文件将直接读入完善的 Fortran 代码(这意味着不能更改 Fortran 代码)。

最佳答案

这是一个很好的整洁解决方案,它使用 fortranformat 包(pip install fotranformat, https://pypi.org/project/fortranformat/ )和 df.apply()让我们使用标准的 Fortran 格式字符串:

import fortranformat as ff
import pandas as pd

df = pd.DataFrame({
'sampleId': ['A','B','C','D'],
'var1' : [0.002,0.004,0.006,0.002],
'var2' : [1.2,1.4,1.6,1.2],
'Nobs': [32,12,9,30]
})

format_string = '(a5, f8.3, f8.1, i5)'
header_line = ff.FortranRecordWriter(format_string)
Formatted_df = df.apply(lambda x : header_line.write(x.values),axis=1)

Formatted_df 对象将是一个 Series,数据框的每一行都有一个字符串元素:

>>> print(Formatted_df)
0 A 0.002 1.2 32
1 B 0.004 1.4 12
2 C 0.006 1.6 9
3 D 0.002 1.2 30
dtype: object
>>> print(Formatted_df.loc[0])
A 0.002 1.2 32
>>> print(type(Formatted_df.loc[0]))
<class 'str'>

要将其写入文件,您只需使用to_csv:

Formatted_df.to_csv('formatted_df.csv',index=False,header=False)

请注意,这不会包含任何列名,因此您可能希望初始化输出文件然后附加到它:

output_fi='formatted_df.csv'
col_names=df.columns.tolist()
with open(output_fi,'w') as outfi:
outfi.write('# '+' '.join(col_names)+"\n")
outfi.write('# '+format_string+"\n")

Formatted_df.to_csv(output_fi,mode='a',index=False,header=False)

另请注意,这假设您已经知道数据框列的顺序。

另外请注意,如果您正在处理非常大的数据帧,您可能会遇到内存问题,因为 Formatted_df 将是 df 的完整副本>。如果是这样,您将不得不将其分块!

关于python - 使用 FORTRAN 格式字符串将 Pandas DataFrame 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com