使用Python获取基于花药列的列值

时间:2018-10-09 20:12:19

标签: python pandas

如何在日期介于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

2 个答案:

答案 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']

我们只需根据日期条件指定要从中获取信息的列名,在本例中为“打开”列。