python - 读取多个电子表格 - 来自中央电子表格的文件路径
问题描述
我正在尝试将多个(数百个)电子表格加载到一个数据框中。问题是这些电子表格位于不同的文件夹/路径中。我希望遍历列出所有特定路径的中央电子表格(每个电子表格都包含一个我希望拉出的名为“测试”的选项卡,此选项卡在所有电子表格中具有相同的结构/布局)但我有一些问题.
我在下面列出了所有可能有用的东西,任何见解将不胜感激!
现有代码问题:
- 我收到一个 TypeError: cannot concatenate object of type class numpy.ndarray 特定于我在下面使用 concat(df.values) 的行
- 我想添加一列,列出聚合数据框中每个电子表格的“标识符”值(以便稍后按特定公司分组)
当前代码:
df_0 = pd.read_excel(r'PATH TO CENTRAL SPREADSHEET')
list_of_paths = df_0['Path'].tolist()
all_data = pd.DataFrame()
for itr in range(len(list_of_paths)):
df = pd.read_excel(list_of_paths[itr], sheet_name="Test", ignore_index=True)
cdf = pd.concat(df.values)
all_data = all_data.append(cdf,ignore_index=True)
中央电子表格:
Identifier Path
AAPL PATH TO UNDERLYING AAPL FILE
GOOG PATH TO UNDERLYING GOOG FILE
基础文件(“测试”选项卡)结构示例
Metric 2018 2017
Revenue 2mm 3mm
Expense 1mm 2mm
期望的输出
Metric Ticker 2018 2017
Revenue AAPL 2mm 3mm
Revenue GOOG 5mm 8mm
Expense AAPL 1mm 2mm
Expense GOOG 4mm 6mm
解决方案
分步骤进行:
目标:将电子表格加载到 df 列表中
df_0 = pd.read_excel(r'PATH TO CENTRAL SPREADSHEET')
dict_of_paths = {}
for i,j in df_0.iterrows():
dict_of_paths[j['Identifier']] = j['Path']
df_list = []
for key in dict_of_paths.keys():
df = pd.read_excel(dict_of_paths[key], sheet_name="Test")
df['ticker'] = key
df_list.append(df)
现在所有的df都在df_list中
mdf = pd.concat(df_list,ignore_index=True)
只要列相同。这应该有效。
推荐阅读
- react-native - 反应原生平台相关渲染
- php - 我想在不刷新页面的情况下调用php函数并返回html
- xcode - xcode / flutter 命令 /usr/bin/codesign 失败,退出代码为 1
- node.js - 节点和标准全局模式
- ios - 从 Push Extension 到 App 触发 KVO
- javascript - 组件间 JS/TS,在 Angular 项目中动态加载
- javascript - momentjs 没有正确计算周数
- python - 如何读取十六进制编辑器文件
- angular - Firebase Google 身份验证被禁止(权限被拒绝)
- rust - 如何表达闭包的生命周期限制以匹配特征有界生命周期?