繁体   English   中英

在python中将多个函数合二为一

[英]Combine multiple functions into one in python

我做了 3 个函数来从.csv文件导入数据,然后取一个特定的列,然后对列中的数据求和。 我想将每个函数中的所有三个dataFrame导出到一个.xlsx文件中。 如果我一个一个运行这些函数,它们会重叠,并且只有最后一个函数会导出到.xlsx文件。 如何同时导出所有三个函数,以便.xlsx文件具有所有三个导出? PS 这是我学习 Python 的第二周,这可能是一个非常业余的问题。 谢谢。

 import pandas as pd


def file1(file_name_one):
    importing = pd.read_csv(file_name_one)
    df1 = pd.DataFrame(data={'Net Sales':[importing['Net Sales'].sum()]})
      df1.to_excel('excelfile.xlsx',
             index=False,
             header=False,
             startrow=5,
             startcol=3,
             )

def file2(file_name_two):
    importing2 = pd.read_csv(file_name_two)
    df2 = pd.DataFrame(data={'Net Sales':[importing2['Net Sales'].sum()]})
      df2.to_excel('excelfile.xlsx',
             index=False,
             header=False,
             startrow=6,
             startcol=3,
             )

def file3(file_name_three):
    importing3 = pd.read_csv(file_name_three)
    df3 = pd.DataFrame(data={'Amount':[importing3['Amount'].sum()]})
      df3.to_excel('excelfile.xlsx',
             index=False,
             header=False,
             startrow=7,
             startcol=3,
             )

print(file1(r"example1.csv"))
print(file2(r"example2.csv"))
print(file3(r"example3.csv"))

#this will result only in the export of file3(), 
#the other 2 functions get "overlapped", how do I also export the other two functions? 

根据我的理解,您希望将 3 个数据框存储在同一个 excel 文件中。

您的代码的问题是您在同一张表中覆盖了数据。 相反,您可以像这样将每个数据帧保存在其赢得的工作表中:

df1.to_excel('excelfile.xlsx', sheet_name='df1' ...

df1.to_excel('excelfile.xlsx', sheet_name='df1' ...

df3.to_excel('excelfile.xlsx', sheet_name='df3' ...

所以理论上:

def handle_files(file_net1, file_net2, file_amount):
    net1 = pd.read_csv(file_net1)
    net2 = pd.read_csv(file_net2)
    amount = pd.read_csv(file_amount)
    df1 = pd.DataFrame(data={'Net Sales':[net1['Net Sales'].sum()]})
    df2 = pd.DataFrame(data={'Net Sales':[net2['Net Sales'].sum()]})
    df3 = pd.DataFrame(data={'Amount':[amount['Amount'].sum()]})
    df1.to_excel('excelfile.xlsx',
             sheet=NetResult1
             index=False,
             header=False,
             startrow=7,
             startcol=3,
             )
    df2.to_excel('excelfile.xlsx',
             sheet=NetResult2
             index=False,
             header=False,
             startrow=7,
             startcol=3,
             )
    df3.to_excel('excelfile.xlsx',
             sheet=Amount
             index=False,
             header=False,
             startrow=7,
             startcol=3,
             )

应该做对吗?

哦,电话应该是:

handle_files(example1.csv, example2.csv, example3.csv)

顺便说一句:我在这里也包括了@Gangula 的答案,以及不同的表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM