简体   繁体   English

介于两个值之间的熊猫数据框的访问部分

[英]Access section of pandas data frame that lies between two values

I have a dataframe of values from backtest. 我有一个来自回测值的数据框。 Sample data: 样本数据:

 market_trading_pair  next_future_timestep_return  ohlcv_start_date  \
0    Poloniex_ETH_BTC                     0.003013        1450753200   
1    Poloniex_ETH_BTC                    -0.006521        1450756800   
2    Poloniex_ETH_BTC                     0.003171        1450760400   
3    Poloniex_ETH_BTC                    -0.003083        1450764000   
4    Poloniex_ETH_BTC                    -0.001382        1450767600   

   prediction_at_ohlcv_end_date  
0                     -0.157053  
1                     -0.920074  
2                      0.999806  
3                      0.627140  
4                      0.999857  

What do i need to write to get the rows between 2 ohlcv_start_date, for example 例如,我需要写些什么才能获得2 ohlcv_start_date之间的行

start = 1450756800 开始= 1450756800

end = 1450767600 结束= 1450767600

would produce rows 1 to 4 将产生第1至4行

pass multiple boolean conditions and use & to and them and use brackets for operator precedence: 传递多个布尔条件并使用&到和并使用方括号来表示运算符的优先级:

In [189]:
df[(df['ohlcv_start_date'] >=1450756800) & (df['ohlcv_start_date'] <=1450767600)]

Out[189]:
  market_trading_pair  next_future_timestep_return  ohlcv_start_date  \
1    Poloniex_ETH_BTC                    -0.006521        1450756800   
2    Poloniex_ETH_BTC                     0.003171        1450760400   
3    Poloniex_ETH_BTC                    -0.003083        1450764000   
4    Poloniex_ETH_BTC                    -0.001382        1450767600   

   prediction_at_ohlcv_end_date  
1                     -0.920070  
2                     40.999806  
3                      0.627140  
4                      0.999857  

If give you DataFrame a DatetimeIndex (based on the value in ohlcv_start_date ) then you can select rows by date using df.loc : 如果为DataFrame提供DatetimeIndex(基于ohlcv_start_date的值),则可以使用df.loc 按日期选择行

In [61]: df.index = pd.to_datetime(df['ohlcv_start_date'], unit='s')
In [63]: df.loc['2015-12-22 03':'2015-12-22 07']
Out[63]: 
                    market_trading_pair  next_future_timestep_return  \
ohlcv_start_date                                                       
2015-12-22 03:00:00    Poloniex_ETH_BTC                     0.003013   
2015-12-22 04:00:00    Poloniex_ETH_BTC                    -0.006521   
2015-12-22 05:00:00    Poloniex_ETH_BTC                     0.003171   
2015-12-22 06:00:00    Poloniex_ETH_BTC                    -0.003083   
2015-12-22 07:00:00    Poloniex_ETH_BTC                    -0.001382   

                     ohlcv_start_date  prediction_at_ohlcv_end_date  
ohlcv_start_date                                                     
2015-12-22 03:00:00        1450753200                     -0.157053  
2015-12-22 04:00:00        1450756800                     -0.920074  
2015-12-22 05:00:00        1450760400                      0.999806  
2015-12-22 06:00:00        1450764000                      0.627140  
2015-12-22 07:00:00        1450767600                      0.999857  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM