【发布时间】:2017-07-19 23:23:40
【问题描述】:
场景:我把这个小科学怪人的代码放在一起(在 SO 用户的一些很棒的帮助下)从 excel 文件中获取数据并放入 pandas 数据框。
我正在尝试做的事情:我正在尝试从可能包含一个或多个数据工作表的文件中获取数据。之后,我打算相应地组织数据框。例如:
date1 identifier 1 bid ask
date1 identifier 2 bid ask
date1 identifier 3 bid ask
date2 identifier 1 bid ask
date2 identifier 3 bid ask
date3 identifier 4 bid ask
date3 identifier 5 bid ask
Obs1:每个文件都可以在单独的工作表中包含“投标”、“要求”或两者的值。
Obs2:不同文件的标识符和日期可能相同,也可能不同。
到目前为止我做了什么:我当前的代码读取文件和每个工作表。如果它遵循条件,它会附加到特定的数据帧。然后它会修复列标题。
问题:当我的代码运行时,由于某种原因,它会产生两个空数据帧。
问题:我如何考虑不同的工作表并将相应的值(到上面的结构)输出到数据框?
当前代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import glob, os
import datetime as dt
from datetime import datetime
import matplotlib as mpl
from openpyxl import load_workbook
directory = os.path.join("C:\\","Users\\DGMS\\Desktop\\final 2")
list_of_dfs = []
dfbid = pd.DataFrame()
dfask = pd.DataFrame()
for root,dirs,files in os.walk(directory):
for file in files:
f = os.path.join(root, file)
wb = load_workbook(f)
for sheet in wb.worksheets:
if sheet == "Bid":
dfbid = pd.concat([dfbid, pd.read_excel(f, "Bid")])
for i in range(1,len(dfbid.columns)):
dfbid.columns.values[i] = pd.to_datetime(dfbid.columns.values[i])
elif sheet == "Ask":
dfask = pd.concat([dfask, pd.read_excel(f, "Ask")])
for i in range(1,len(dfask.columns)):
dfask.columns.values[i] = pd.to_datetime(dfask.columns.values[i])
【问题讨论】:
标签: python excel pandas dataframe