选择数据
获取列
单列获取
要获取 DataFrame 的单个列,你可以使用列名以两种不同的方式:
- 使用点(
.
)操作符,这种方式更像是访问对象的属性。 - 使用方括号(
[]
)和列名,这种方式更像是从字典中获取值。
假设我们有以下 DataFrame:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 70000, 80000]
}
df = pd.DataFrame(data)
获取 “Name” 列:
# 使用点操作符
name_column_dot = df.Name
# 使用方括号
name_column_brackets = df['Name']
多列获取
要获取 DataFrame 的多个列,你需要使用方括号([]
)将列名的列表传递给它。这将返回一个新的 DataFrame,只包含指定的列。
获取 “Name” 和 “Age” 列:
columns = df[['Name', 'Age']]
列的条件选择
你可以使用条件表达式来选择满足特定条件的列。这通常结合使用布尔索引完成。
选择 “Salary” 大于 60000 的所有记录:
high_salary = df[df['Salary'] > 60000]
动态选择列
当你需要根据变量或计算结果来选择列时,可以使用 .loc[]
和 .iloc[]
方法。.loc[]
用于基于列名选择,而 .iloc[]
用于基于列的整数位置选择。
# 使用 .loc[] 选择 'Name' 和 'Age' 列
selected_columns_loc = df.loc[:, ['Name', 'Age']]
# 使用 .iloc[] 选择前两列
selected_columns_iloc = df.iloc[:, 0:2]
获取行
使用 .loc[]
(基于标签)
.loc[]
方法允许你通过标签索引来选择数据。当你知道行的标签名时,可以使用此方法。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 70000, 80000]
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
# 选择标签为 'a' 的行
row_a = df.loc['a']
# 选择标签为 'a' 和 'b' 的行
rows_ab = df.loc[['a', 'b']]
使用 .iloc[]
(基于位置)
.iloc[]
方法允许你通过行的位置(整数索引)来选择数据。这是在你知道行的具体位置时的选择方法。
# 选择第一行
first_row = df.iloc[0]
# 选择前两行
first_two_rows = df.iloc[0:2]
使用条件表达式
你可以使用条件表达式来选择满足特定条件的行。这通常是通过将条件表达式放在方括号内完成的。
# 选择 Age 大于 30 的所有行
older_than_30 = df[df['Age'] > 30]
使用切片
对于连续的行,你还可以使用 Python 的切片语法来选择行。这种方法既可以用在 .loc[]
也可以用在 .iloc[]
中。
# 使用切片选择前两行
first_two_rows_slice = df[0:2]
使用 .at[]
和 .iat[]
获取单个值
当你需要访问 DataFrame 的单个元素时,.at[]
(基于标签)和 .iat[]
(基于整数位置)方法提供了更快的访问方式。
# 使用 .at[] 获取特定单元格的值
name_of_a = df.at['a', 'Name']
# 使用 .iat[] 获取特定单元格的值
first_name = df.iat[0, 0]
修改数据
在 Pandas 中,赋值操作是数据处理的核心部分,它允许你在 DataFrame
或 Series
中修改、添加或更新数据。Pandas 提供了灵活的赋值方法,适用于各种数据操作需求。这里将详细介绍如何在 Pandas 中进行赋值。
修改单个值
使用 .at[]
和 .iat[]
.at[]
用于根据行标签和列标签修改单个值。.iat[]
用于根据行和列的位置(整数索引)修改单个值。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3], 'B': [4, 5, 6]})
# 使用行标签和列标签
df.at[0, 'A'] = 10
# 使用行和列的位置
df.iat[0, 1] = 40
修改多个值
使用布尔索引
布尔索引允许你根据条件来修改符合条件的多个值。
df[df['A'] > 1] = -1
使用 .loc[]
和 .iloc[]
.loc[]
根据行标签和列标签选择数据进行修改。.iloc[]
根据行和列的位置选择数据进行修改。
# 修改第一行的 'A' 列
df.loc[0, 'A'] = 20
# 修改前两行的 'B' 列
df.loc[:1, 'B'] = [50, 60]
# 使用 .iloc 修改第一行第一列
df.iloc[0, 0] = 30
添加或更新列
直接赋值
直接赋值是添加新列或修改现有列最直接的方法。
# 添加新列 'C'
df['C'] = [7, 8, 9]
# 修改列 'A'
df['A'] = [100, 200,