📜  使用 [ ]、loc 和 iloc 在 Pandas DataFrame 中按名称或索引选择行和列(1)

📅  最后修改于: 2023-12-03 15:22:09.245000             🧑  作者: Mango

使用 loc 和 iloc 在 Pandas DataFrame 中按名称或索引选择行和列

在 Pandas 中,loc 是通过标签来选择行和列,而 iloc 是通过索引来选择行和列。本文将详细介绍如何使用它们来选取 Pandas DataFrame 中的数据。

按名称选择行

要按名称选择某一行,可以使用 loc 函数。以下是一个示例:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['foo', 'bar', 'baz'])

# 选择 foo 行
foo_row = df.loc['foo']

print(foo_row)

输出结果:

A    1
B    4
C    7
Name: foo, dtype: int64

注意,结果是一个 Series 对象,它的索引是列名。

按名称选择列

要按名称选择某一列,也可以使用 loc 函数。以下是一个示例:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['foo', 'bar', 'baz'])

# 选择 A 列
A_col = df.loc[:, 'A']

print(A_col)

输出结果:

foo    1
bar    2
baz    3
Name: A, dtype: int64

注意,结果是一个 Series 对象,它的索引是行名。

按索引选择行

要按索引选择某一行,可以使用 iloc 函数。以下是一个示例:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['foo', 'bar', 'baz'])

# 选择第二行
second_row = df.iloc[1, :]

print(second_row)

输出结果:

A    2
B    5
C    8
Name: bar, dtype: int64

注意,结果是一个 Series 对象,它的索引是列名。

按索引选择列

要按索引选择某一列,也可以使用 iloc 函数。以下是一个示例:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['foo', 'bar', 'baz'])

# 选择第二列
second_col = df.iloc[:, 1]

print(second_col)

输出结果:

foo    4
bar    5
baz    6
Name: B, dtype: int64

注意,结果是一个 Series 对象,它的索引是行名。

按名称和索引选择行和列

要按名称和索引选择某一行和某一列,可以使用 loc 和 iloc 函数。以下是一个示例:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['foo', 'bar', 'baz'])

# 选择 foo 行,B 列
foo_B = df.loc['foo', 'B']

print(foo_B)

输出结果:

4

注意,结果是一个标量,而不是 Series 对象。