python dataframe索引_python-Pandas DataFrame获取索引匹配特定条件的...

尝试这个:

compare[compare.index.get_level_values(0).month.isin([5, 6, 7])]

演示:

In [45]: import pandas_datareader.data as web

In [46]: df = web.DataReader('AAPL', 'google', '2017-06-01')

In [48]: df = df.assign(i2=np.arange(len(df))).set_index('i2', append=True)

In [49]: df

Out[49]:

Open High Low Close Volume

Date i2

2017-06-01 0 153.17 153.33 152.22 153.18 16404088

2017-06-02 1 153.58 155.45 152.89 155.45 27770715

2017-06-05 2 154.34 154.45 153.46 153.93 25331662

2017-06-06 3 153.90 155.81 153.78 154.45 26624926

2017-06-07 4 155.02 155.98 154.48 155.37 21069647

2017-06-08 5 155.25 155.54 154.40 154.99 21250798

2017-06-09 6 155.19 155.19 146.02 148.98 64882657

2017-06-12 7 145.74 146.09 142.51 145.42 72307330

2017-06-13 8 147.16 147.45 145.15 146.59 34165445

2017-06-14 9 147.50 147.50 143.84 145.16 31531232

... ... ... ... ... ...

2017-07-31 41 149.90 150.33 148.13 148.73 19845920

2017-08-01 42 149.10 150.22 148.41 150.05 35368645

2017-08-02 43 159.28 159.75 156.16 157.14 69936800

2017-08-03 44 157.05 157.21 155.02 155.57 27097296

2017-08-04 45 156.07 157.40 155.69 156.39 20559852

2017-08-07 46 157.06 158.92 156.67 158.81 21870321

2017-08-08 47 158.60 161.83 158.27 160.08 36205896

2017-08-09 48 159.26 161.27 159.11 161.06 26131530

2017-08-10 49 159.90 160.00 154.63 155.32 40804273

2017-08-11 50 156.60 158.57 156.07 157.48 26180743

[51 rows x 5 columns]

In [50]: df[df.index.get_level_values(0).month.isin([5,8])]

Out[50]:

Open High Low Close Volume

Date i2

2017-08-01 42 149.10 150.22 148.41 150.05 35368645

2017-08-02 43 159.28 159.75 156.16 157.14 69936800

2017-08-03 44 157.05 157.21 155.02 155.57 27097296

2017-08-04 45 156.07 157.40 155.69 156.39 20559852

2017-08-07 46 157.06 158.92 156.67 158.81 21870321

2017-08-08 47 158.60 161.83 158.27 160.08 36205896

2017-08-09 48 159.26 161.27 159.11 161.06 26131530

2017-08-10 49 159.90 160.00 154.63 155.32 40804273

2017-08-11 50 156.60 158.57 156.07 157.48 26180743

更新:使用索引值进行测试:

In [56]: i = pd.DatetimeIndex(['2016-01-04 01:40:00', '2016-01-04 02:00:00', '2016-01-04 02:10:00', '2016-01-04 02:30:00', '2016-01-04 02:4

...: 0:00'], dtype='datetime64[ns]', name=u'TTimeStamp', freq=None)

In [57]: i

Out[57]: DatetimeIndex(['2016-01-04 01:40:00', '2016-01-04 02:00:00', '2016-01-04 02:10:00', '2016-01-04 02:30:00', '2016-01-04 02:40:00'],

dtype='datetime64[ns]', name='TTimeStamp', freq=None)

In [58]: i.month

Out[58]: Int64Index([1, 1, 1, 1, 1], dtype='int64', name='TTimeStamp')

In [59]: i.month.isin([2,3])

Out[59]: array([False, False, False, False, False], dtype=bool)

In [60]: i.month.isin([1,2,3])

Out[60]: array([ True, True, True, True, True], dtype=bool)

UPDATE2:尝试以下解决方法:

compare[pd.Series(compare.index.get_level_values(0).month).isin([5, 6, 7]).values]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值