问题
What is the pythonic way to slice a dataframe by more index ranges (eg. by 10:12
and 25:28
)?
I want this in a more elegant way:
df = pd.DataFrame({'a':range(10,100)})
df.iloc[[i for i in range(10,12)] + [i for i in range(25,28)]]
Result:
a
10 20
11 21
25 35
26 36
27 37
Something like this would be more elegant:
df.iloc[(10:12, 25:28)]
回答1:
You can use numpy's r_ "slicing trick":
df = pd.DataFrame({'a':range(10,100)})
df.iloc[pd.np.r_[10:12, 25:28]]
Gives:
a
10 20
11 21
25 35
26 36
27 37
回答2:
You can take advantage of pandas isin function.
df = pd.DataFrame({'a':range(10,100)})
ls = [i for i in range(10,12)] + [i for i in range(25,28)]
df[df.index.isin(ls)]
a
10 20
11 21
25 35
26 36
27 37
来源:https://stackoverflow.com/questions/39393856/python-pandas-slice-dataframe-by-multiple-index-ranges