Python 如何从Dataframe创建特定格式的文本文件

Python 如何从Dataframe创建特定格式的文本文件,python,pandas,Python,Pandas,概述: 我有一个6列的Pandas数据框,输出需要在一个文本文件中,如下所示 输入: 文本文件中需要输出,如下所示: Intercept=1.078 (除法='3')*0.448 (除法='2')*-0.024 (划分为('1'、'4'、'5'))*-0.002 (新戈尔芬在('1','Y'))中的比例为*0.093 ('001'LE ppseg30 LE'010')*0.056 ('011'LE ppseg30 LE'020')*0.043 (ppseg30='21')*0.052 通过编写

概述: 我有一个6列的Pandas数据框,输出需要在一个文本文件中,如下所示

输入:

文本文件中需要输出,如下所示:

Intercept=1.078
(除法='3')*0.448
(除法='2')*-0.024
(划分为('1'、'4'、'5'))*-0.002
(新戈尔芬在('1','Y'))中的比例为*0.093
('001'LE ppseg30 LE'010')*0.056
('011'LE ppseg30 LE'020')*0.043
(ppseg30='21')*0.052

通过编写一个函数将每一行转换为字符串,然后将其应用于数据帧的行,可以有效地完成此操作。关键字参数axis=1指定函数应应用于行,而不是列

转换本身包括找出它是什么类型的比较,然后使用


请将输入共享为文本块,而不是图像,以便其他人更容易重新创建。从你的问题来看,我想你需要逻辑来将你的输入转换成期望的输出?不保存,对吗?是的,我需要如上所述的将输出创建为文本文件的逻辑。感谢您的建议,从下一次开始,我将创建一个文本块而不是图像。请编辑您的问题,将数据框作为文本包含在内。这使我们更容易帮助调试。嗨@joooeey,谢谢你检查这个。我尝试运行您的代码,但在输出中,即使“EQVAL”的空值也是如此。输出如下图所示:(截距='nan')*1.078(除法='3')*0.44799999999995(除法='2')*-0.024(除法='1')*-0.002(除法='5')*-0.002(除法='4')*-0.002(新LSGOLFIN='nan)*0.09300000000000000001(ppseg30='nan)*0.05599999999999994(ppseg30='nan)*0.043(EG30='21'))*0.0520000000005hi@Joooeey,您有机会进一步查看代码吗?看起来该字段不是空的,但它是
np.nan
bool(np.nan)==True
,这就是我的代码不起作用的原因。最好使用Pandas自己的
pd.notna
功能检测非空单元格:
如果pd.notna(row_系列['EQVAL']):
def row_to_string(row_series):
    """Convert a DataFrame row to the correct string"""

    if row_series['EQVAL']:  # if EQVAL field is not empty
        return f"({row_series['VNAME']} = '{row_series['EQVAL']})*{row_series['ESTIMATE']}"
    # ... add the if statements and return statements for the other three types of comparisons yourself!

text_lines = dataframe.apply(row_to_string, axis=1)
text_lines.to_csv('text_file.txt', index=None, header=None)