我编写了3个函数来从.csv
文件导入数据,然后取一个特定的列,然后对列内的数据求和。我想从每个函数导出所有三个dataFrame
到一个.xlsx
文件。如果我一个接一个地运行函数,它们将重叠,只有最后一个函数将导出到.xlsx
文件。如何同时导出所有三个函数,以便.xlsx
文件将具有所有三个导出?注:这是我学习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,
)
应该能起作用,对吗?
Ow和call应该是:
handle_files(example1.csv, example2.csv, example3.csv)
顺便说一句:我在这里也包括了@Gangula的答案,与不同的表格。