如何在日期介于2015-01-01和2015-03-01之类的日期之间获取列值,或如何为2015-01-01至2015-03-01之间的日期创建所有列的新DataFrame < / p>
这是我当前的代码:
from datetime import date
from nsepy import get_history
sbin = get_history(symbol='SBIN',
start=date(2015,1,1),
end=date(2015,1,10))
这是输入数据:
Symbol Series Prev Close Open High Low Last Close \
Date
2015-01-01 SBIN EQ 311.85 312.45 315.00 310.70 314.0 314.00
2015-01-02 SBIN EQ 314.00 314.35 318.30 314.35 315.6 315.25
2015-01-05 SBIN EQ 315.25 316.25 316.80 312.10 312.8 312.75
2015-01-06 SBIN EQ 312.75 310.00 311.10 298.70 299.9 299.90
2015-01-07 SBIN EQ 299.90 300.00 302.55 295.15 301.4 300.15
我有一个拥有多年数据的DataFarme,我经常需要绘制它的小样本(基于日期的不同样本),并且我需要一个函数来基于某些日期拆分我的dataFrame。例如,具有相同列的新dataFrame,但仅限这些日期2015-01-01 -2015-03-01
答案 0 :(得分:0)
您可以像其他任何日期一样对日期进行比较
# This will be true for every row that is true for both of these comparisons
idx = (sbin.index >= date(2015,1,1)) * (sbin.index <= date(2015,3,1))
sbin.iloc[idx].loc[:, ('Open', 'Close')]
new_sbin = sbin.iloc[idx]
答案 1 :(得分:0)
不确定我是否完全理解您的问题,但这是我的解释方式:
方案1:您只想获取数据列的行,其日期列在某个范围内。您可以像这样使用pandas df.loc来做到这一点...
#Create a dataframe similar to yours
d = pd.DataFrame({'date': [datetime.date(2015,01,01), datetime.date(2015,01,02), datetime.date(2015,01,05), datetime.date(2015,01,06), datetime.date(2015, 01, 07)], 'open': [1, 2, 3, 4, 5]})
new_df = d.loc[(d['date'] >= datetime.date(2015,01,01)) & (d['date'] < datetime.date(2015,01,05))]
这将返回日期在2015年1月1日至2015年1月5日之间的行(不包括05)。
方案2:您希望根据上述日期条件获取特定列的值。您可以像这样...
another_df = d.loc[(d['date'] >= datetime.date(2015,01,01)) & (d['date'] < datetime.date(2015,01,05)), 'open']
我们只需根据日期条件指定要从中获取信息的列名,在本例中为“打开”列。