loc包括开始和结束,一个不太理想的工作是获取索引位置并用于iloc切片数据框(假设您没有重复索引):
df=pd.DataFrame({'A':[1,2,3,4]}, index = ['a','b','c','d'])
df.iloc[df.index.get_loc('a'):df.index.get_loc('c')]
# A
#a 1
#b 2
df.loc['a':'c']
# A
#a 1
#b 2
#c 3
Run Code Online (Sandbox Code Playgroud)
我最容易想到的是df.loc[start:end].iloc[:-1]。
砍掉最后一个。
没有一个答案解决end不属于索引的情况。更通用的解决方案是简单地将索引与start和进行比较end,这样您就可以强制它们中的任何一个包含独占。
df[(df.index >= start) & (df.index < end)]
Run Code Online (Sandbox Code Playgroud)
例如:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(
{
"x": np.arange(48),
"y": np.arange(48) * 2,
},
index=pd.date_range("2020-01-01 00:00:00", freq="1H", periods=48)
)
>>> start = "2020-01-01 14:00"
>>> end = "2020-01-01 19:30" # this is not in the index
>>> df[(df.index >= start) & (df.index < end)]
x y
2020-01-01 14:00:00 14 28
2020-01-01 15:00:00 15 30
2020-01-01 16:00:00 16 32
2020-01-01 17:00:00 17 34
2020-01-01 18:00:00 18 36
2020-01-01 19:00:00 19 38
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4096 次 |
| 最近记录: |