dataframe如何用索引切片
时间: 2023-07-19 07:33:07 浏览: 73
在 Pandas 中,可以使用索引切片来获取 DataFrame 中的子集,具体方法如下:
1. 以行为基准进行切片
- 使用行标签(索引)进行切片,例如取出第 2 行到第 4 行的数据:
```
df.loc[2:4, :]
```
- 使用行号进行切片,例如取出第 2 行到第 4 行的数据:
```
df.iloc[1:4, :]
```
2. 以列为基准进行切片
- 使用列标签进行切片,例如取出 name 和 age 两列数据:
```
df.loc[:, ['name', 'age']]
```
- 使用列号进行切片,例如取出第 2 列到第 4 列的数据:
```
df.iloc[:, 1:4]
```
3. 同时以行和列为基准进行切片
- 使用行标签和列标签进行切片,例如取出第 2 行到第 4 行,name、age、gender 三列的数据:
```
df.loc[2:4, ['name', 'age', 'gender']]
```
- 使用行号和列号进行切片,例如取出第 2 行到第 4 行,第 2 列到第 4 列的数据:
```
df.iloc[1:4, 1:4]
```
其中, `:` 表示取全部的行或列。同时,切片时第一个数字是包含在结果中的,而第二个数字是不包含在结果中的,这与 Python 中的切片操作是相同的。
需要注意的是,在进行索引切片时,使用的是 `loc` 和 `iloc` 方法,而不是 `[]` 运算符。在 Pandas 中,`[]` 运算符通常用于列的选择。
相关问题
dataframe 索引切片包含右边吗,series索引切片包含右边吗
在 Pandas 中,DataFrame 和 Series 的索引切片默认是包含右边的。也就是说,当你使用 `df[start:end]` 或者 `s[start:end]` 进行索引切片时,`end` 所在的元素也会被包含在内。
举个例子,假设有一个 DataFrame `df`,其中包含了一个整数索引:
```
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [1, 2, 3, 4]}, index=[10, 20, 30, 40])
>>> df
A
10 1
20 2
30 3
40 4
```
如果你想要获取索引从 20 到 30 的所有行,可以使用下面的代码:
```
>>> df[20:31]
A
20 2
30 3
```
注意,这里的 `31` 实际上是超出了索引范围的,但由于切片默认是包含右边的,因此依然会返回索引为 30 的这一行。
类似地,对于一个 Series `s`,使用 `s[start:end]` 进行索引切片也是包含右边的。例如:
```
>>> s = pd.Series([1, 2, 3, 4], index=[10, 20, 30, 40])
>>> s[20:31]
20 2
30 3
dtype: int64
```
同样地,这里的 `31` 也是被包含在内的。
dataframe切片索引不连续的行
可以使用iloc方法进行切片索引不连续的行。
例如,假设有一个名为df的DataFrame,其中包含以下数据:
```
A B C
0 1 2 3
1 4 5 6
2 7 8 9
3 10 11 12
4 13 14 15
```
如果要选择第1行和第3行,可以使用以下代码:
```
df_slice = df.iloc[[1, 3]]
```
这将返回以下数据:
```
A B C
1 4 5 6
3 10 11 12
```
在这个例子中,我们使用了iloc方法,并将一个包含所需行索引的列表传递给它。这使我们能够选择不连续的行并返回一个包含这些行的新DataFrame。
阅读全文