我正在处理股票数据,在执行某些类型的分析时,我希望使我的数据集具有相同长度的数据。你知道吗
问题
如果我得到苹果公司的负荷数据,我将得到1985年以来的每日数据,但如果天然气ETF的负荷数据,可能要追溯到2012年。我现在想过滤苹果,只显示2012年的历史。此外,结束日期,例如,我的一些数据集可能不是最新的,因为苹果的数据范围从1985年到1-20-17年,天然气ETF的数据范围从2012年到12-23-16年。我还想要另一个过滤器,设置最大日期。所以现在我的苹果数据集被过滤为2012年到2016年12月23日之间的日期。现在我的数据集是相等的。你知道吗
方法
我有一本名为股票的字典,它存储了我所有的日期框架。所有数据帧都有一个名为D的列,它是Date列。你知道吗
我编写了一个函数,用dataframes填充字典,并获取每个df的最小和最大日期。我将所有这些min-max日期存储在另外两个字典DatesMax和DateMin中,然后取这两个字典中的min和max来获得将用于所有数据帧上的筛选器值的max和min日期。你知道吗
下面的函数起作用,它获取多个数据帧的最小和最大日期,并将它们返回到名为DatesMinMax的字典中。你知道吗
def MinMaxDates (FileName):
DatesMax = {}; DatesMin = {}
DatesMinMax = {}; stocks = {}
with open (FileName) as file_object:
Current_indicators = file_object.read()
tickers = Current_indicators.split('\n')
for i in tickers:
a = '/' in i
if a == True:
x = i.find("/")+1
df = pd.read_csv(str( i[x:]) + '_data.csv')
stocks[i] = df
maxDate = max(df.D)
minDate = min(df.D)
DatesMax[i] = maxDate
DatesMin[i] = minDate
else:
df = pd.read_csv(i + '_data.csv')
stocks[i] = df
maxDate = max(df.D)
minDate = min(df.D)
DatesMax[i] = maxDate
DatesMin[i] = minDate
x = min(DatesMax.values())
y = max(DatesMin.values())
DatesMinMax = {'MaxDate' : x, 'MinDate' : y}
return DatesMinMax
print DatesMinMax
# {'MinDate': '2012-02-08', 'MaxDate': '2017-01-20'}
问题
现在,我必须在dict nameStocks中的所有数据帧上运行我的循环,以过滤这些日期列。重新循环某些内容似乎效率低下,但我想不出任何其他方法来应用过滤器。你知道吗
实际上,您可能不需要为以后的筛选捕获min和max(因为} 。你知道吗
2016-12-30 < 2017-01-20
),只需跨“D”(Date)列上的所有数据帧运行完整的内部联接^{考虑使用链式合并来实现这一点,链式合并确保所有dataframe的长度相等,然后按ticker列对输出的主dataframe进行切片,以构建Stocks字典。当然,您可以使用宽主数据框进行分析:
相关问题 更多 >
编程相关推荐