首页 > 解决方案 > 导入多个具有相似名称的 excel 文件,旋转每个 excel 文件,然后将结果附加到单个文件中

问题描述

我的问题陈述如上。以下是我到目前为止的进展

  1. 我想从同一位置提取多个 excel 文件,即

Test1 Test2 Test3 ...(我正在使用 glob 来执行此操作)(DONE) 2. 我想遍历文件夹并查找以字符串开头的文件(DONE) 3. 然后我形成了一个空数据框。然后我想根据日期(作为列)旋转第一个文件数据框,转到下一个文件(做同样的事情),然后将我的结果附加到数据框。

我现在的问题是我将所有结果附加到使用我的第一个文件创建的数据透视表中。

有人可以帮忙吗。

import pandas as pd
import numpy as np
import glob
glob.glob("C:/Users/Tom/Desktop/DC")
all_data = pd.DataFrame()
for f in glob.glob("C:/Users/Tom/Desktop/DC/Test?.xlsx"):
    df = pd.read_excel(f)
    pivot = pd.pivot_table(df, index='DC Desc', columns='Est Wk End Date', values=['Shipped/Ordered Units',aggfunc='sum')
    all_data = all_data.append(pivot,ignore_index=True)
all_data.to_excel("outputappended2.xlsx")

编辑。

非常感谢您的回复。这很有帮助。您能否告诉我在连接下一个数据透视表之前如何添加新行,以便区分结果并按日期排序。

例如。我得到以下结果

DC Desc 2020 年 12 月 1 日 4 月 24 日 2021 年 2 月 6 日 a 5000
b 2000 4000 c 1000

我正在寻找

DC Desc 2020 年 12 月 1 日 2021 年 4 月 24 日 21 日 2021 年 2 月 6 日 a 5000
b 2000 4000

c 1000 查找 这是我可以知道我从其他文件中获得的信息,并对列进行排序。任何帮助表示赞赏。

标签: pythonpandasdataframenumpypivot

解决方案


您最好的选择应该是使用pd.concat. 我喜欢的一种简单方法是创建一个processing函数,然后连接所有数据帧。像这样的东西:

import pandas as pd
import glob

def pivot_your_data(f):
    df = pd.read_excel(f)
    return pd.pivot_table(df, index='DC Desc', columns='Est Wk End Date', values='Shipped/Ordered Units', aggfunc='sum')

all_data = pd.concat([pivot_your_data(f) for f in glob.glob("C:/Users/Tom/Desktop/DC/Test*.xlsx")])

然后你可以删除索引或做更多的数据处理,但重点是使用pd.concat


推荐阅读