Python 通过不同的函数携带生成的数据帧

Python 通过不同的函数携带生成的数据帧,python,pandas,function,dataframe,Python,Pandas,Function,Dataframe,我想在一个main()函数下运行8个函数。该过程首先从文件导入并创建df,然后在新函数下对该df执行一些清理操作。我复制了基本结构,包括三个起始函数和一个main()函数。我不确定的是如何以正确的方式将loader()的结果“携带”到clean_data(),然后将clean_data()的结果“携带”到操作_one()。现在我得到一个错误,没有定义df。谢谢你的帮助 def loader(): import pandas as pd import numpy as np

我想在一个main()函数下运行8个函数。该过程首先从文件导入并创建df,然后在新函数下对该df执行一些清理操作。我复制了基本结构,包括三个起始函数和一个main()函数。我不确定的是如何以正确的方式将loader()的结果“携带”到clean_data(),然后将clean_data()的结果“携带”到操作_one()。现在我得到一个错误,没有定义df。谢谢你的帮助

def loader():

    import pandas as pd
    import numpy as np

    df = pd.read_excel('file_example.xlsx')
    return df


def clean_data():
        
    del df['column_7']
    return df


def operation_one():
        
    del df['column_12']
    return df


def main():

    loader()
    clean_data()
    operation_one()

    with pd.ExcelWriter(file.xlsx") as writer:
        df.to_excel(writer, sheet_name='test' , index=False)

if __name__ == "__main__":
    main()

您需要确保为函数返回值分配变量。这就是你“携带”结果的方式。在继续操作时,还需要将这些变量作为函数参数传入。在loader()中为文件名添加函数参数,而不是在函数中对文件进行硬编码,这可能也是您需要考虑的问题

import pandas as pd
import numpy as np


def loader():

    df = pd.read_excel('file_example.xlsx')
    return df


def clean_data(df):
        
    del df['column_7']
    return df


def operation_one(df):
        
    del df['column_12']
    return df


def main():

    df = loader()
    df = clean_data(df)
    df = operation_one(df)
   

    with pd.ExcelWriter("file.xlsx") as writer:
        df.to_excel(writer, sheet_name='test' , index=False)

if __name__ == "__main__":
    main()

您需要确保为函数返回值分配变量。这就是你“携带”结果的方式。在继续操作时,还需要将这些变量作为函数参数传入。在loader()中为文件名添加函数参数,而不是在函数中对文件进行硬编码,这可能也是您需要考虑的问题

import pandas as pd
import numpy as np


def loader():

    df = pd.read_excel('file_example.xlsx')
    return df


def clean_data(df):
        
    del df['column_7']
    return df


def operation_one(df):
        
    del df['column_12']
    return df


def main():

    df = loader()
    df = clean_data(df)
    df = operation_one(df)
   

    with pd.ExcelWriter("file.xlsx") as writer:
        df.to_excel(writer, sheet_name='test' , index=False)

if __name__ == "__main__":
    main()

因此,您的主函数只是告诉其他函数运行。函数有自己的变量,这些变量保存在定义它们的函数中。因此,当
def loader()
运行is时,将df的值返回到运行函数的行,在
def main()中:
将该值存储在主函数中,只需将
df=loader()
放在主函数中即可。当您调用新函数时,您需要将这个值传递给它们,以便它们在df值上执行。因此,当您在主函数中调用下一个函数时,将df添加到输入字段中<代码>清除数据(df)。然后,clean data函数将接受df的值。您现在需要重新定义
def clean_data():
以获取这样的变量,
def clean_data(df):

这是我清理过的

import pandas as pd
import numpy as np

def loader():
    df = pd.read_excel('file_example.xlsx')
    return df


def clean_data(df):
    del df['column_7']
    return df


def operation_one(df):
    del df['column_12']
    return df


def main():
    df = loader()
    df = clean_data(df)
    df = operation_one(df)

    with pd.ExcelWriter("file.xlsx") as writer:
        df.to_excel(writer, sheet_name='test', index=False)

    if __name__ == "__main__":
        main()

我希望这有点帮助,因为这是我在这里回答的第一个问题。

所以您的主函数只是告诉其他函数运行。函数有自己的变量,这些变量保存在定义它们的函数中。因此,当
def loader()
运行is时,将df的值返回到运行函数的行,在
def main()中:
将该值存储在主函数中,只需将
df=loader()
放在主函数中即可。当您调用新函数时,您需要将这个值传递给它们,以便它们在df值上执行。因此,当您在主函数中调用下一个函数时,将df添加到输入字段中<代码>清除数据(df)。然后,clean data函数将接受df的值。您现在需要重新定义
def clean_data():
以获取这样的变量,
def clean_data(df):

这是我清理过的

import pandas as pd
import numpy as np

def loader():
    df = pd.read_excel('file_example.xlsx')
    return df


def clean_data(df):
    del df['column_7']
    return df


def operation_one(df):
    del df['column_12']
    return df


def main():
    df = loader()
    df = clean_data(df)
    df = operation_one(df)

    with pd.ExcelWriter("file.xlsx") as writer:
        df.to_excel(writer, sheet_name='test', index=False)

    if __name__ == "__main__":
        main()

我希望这会有所帮助,因为这是我在这里回答的第一个问题。

您必须将df指定为函数返回值的变量。i、 那么在每个函数的开头写df=loader(),然后写df=clean_data()?那么我在main()函数中放了什么呢?必须为函数返回值指定df作为变量。i、 那么在每个函数的开头写df=loader(),然后写df=clean_data()?我在main()函数中放了什么?