从几个工作表Python中添加列

时间:2018-06-14 13:00:16

标签: excel python-2.7 pandas xlrd xlwt

我正在尝试从工作簿中的几个不同工作表中导入某些数据列。然而,虽然附加它似乎只是附加了q2调查'到一个新的工作簿。如何正确追加?

import sys, os
import pandas as pd
import xlrd
import xlwt


b = ['q1 survey', 'q2 survey','q3 survey'] #Sheet Names
df_t = pd.DataFrame(columns=["Month","Date", "Year"]) #column Name
xls = "path_to_file/R.xls"
sheet=[]
df_b=pd.DataFrame()
pd.read_excel(xls,sheet)
for sheet in b:
       df=pd.read_excel(xls,sheet)
       df.rename(columns=lambda x: x.strip().upper(), inplace=True)
       bill=df_b.append(df[df_t])


bill.to_excel('Survey.xlsx', index=False)

1 个答案:

答案 0 :(得分:1)

我想如果你这样做:

b = ['q1 survey', 'q2 survey','q3 survey'] #Sheet Names
list_col = ["Month","Date", "Year"] #column Name
xls = "path_to_file/R.xls"
#create the empty df named bill to append after
bill= pd.DataFrame(columns = list_col) 
for sheet in b:
   # read the sheet
   df=pd.read_excel(xls,sheet)
   df.rename(columns=lambda x: x.strip().upper(), inplace=True)
   # need to assign bill again
   bill=bill.append(df[list_col])
# to excel
bill.to_excel('Survey.xlsx', index=False)

它应该可以正常运行并纠正代码中的错误,但使用pd.concat可以做一些不同的事情:

list_sheet = ['q1 survey', 'q2 survey','q3 survey'] #Sheet Names
list_col = ["Month","Date", "Year"] #column Name
# read once the xls file and then access the sheet in the loop, should be faster
xls_file = pd.ExcelFile("path_to_file/R.xls")
#create a list to append the df
list_df_to_concat = []
for sheet in list_sheet :
   # read the sheet
   df= pd.read_excel(xls_file, sheet)
   df.rename(columns=lambda x: x.strip().upper(), inplace=True)
   # append the df to the list
   list_df_to_concat.append(df[list_col])
# to excel
pd.concat(list_df_to_concat).to_excel('Survey.xlsx', index=False)