使用Python在行中的多个csv文件

时间:2018-05-30 07:59:05

标签: python excel python-3.x pandas csv

我是python中excel / csv操作的新手。

我有1k + .xlsx文件。每个excel文件有2张,sheet1.csv,sheet2.csv(表单名称在所有.xlsx中都相同)。从所有excel文件中,我必须收集sheet1.csv并且必须使用所有工作表创建新的excel。

来自一个excel的Sheet1.scv如下所示:

Name    Age     Gender  State   City
N1      22         M    Cal     ABC
N2      32         M    NC      Dur
来自另一个excel的

sheet1.csv如下所示:

Name    Age     Gender  State   City
N3      26       F      KLM     PQR
N4      23       M      SC      STM

我正在寻找每个工作表数据之间的输出,包括空行

Name    Age     Gender  State   City
N1      22       M      Cal     ABC
N2      32       M      NC      Dur

N3      26       F      KLM     PQR
N4      23       M      SC      STM

我试过这个但却无法理解如何继续进行上述工作:

for excel in glob.glob(os.path.join(os.getcwd(), "*.xlsx")):
      df=pd.read_excel(excel,sheet_name=0) #sheet1.csv is the first sheet in all excel
      df.to_excel('Final.xlsx')

此代码仅保留excel文件的最后csv数据。请帮助修复上述问题陈述。

2 个答案:

答案 0 :(得分:1)

是否可以,但integer的列将转换为float s:

dfs = []
for excel in glob.glob(os.path.join(os.getcwd(), "*.xlsx")):
      df=pd.read_excel(excel,sheet_name=0) #sheet1.csv is the first sheet in all excel
      #if really need empty row 
      df = df.append(pd.DataFrame([np.nan] * len(df.columns)))
      dfs.append(df)

df = pd.concat(dfs)
df.to_excel('Final.xlsx')

答案 1 :(得分:1)

您可以执行以下操作来连接给定路径中的所有Excel。

allFiles = glob.glob(os.path.join(os.getcwd(), "*.xlsx"))
frame = pd.DataFrame()
list_ = []
append = list_.append
for file_ in allFiles:
    df = pd.read_excel(file_,sheet_name=0)
    append(df)
frame = pd.concat(list_)