pandas loc 详解
参考:pandas loc
在数据分析和数据处理中,pandas 是 Python 中最受欢迎的库之一。它提供了大量的功能来处理和分析数据。其中,loc
方法是用于数据选择和修改的重要工具。本文将详细介绍 loc
方法的使用,包括其语法、功能以及通过示例代码展示其在实际问题中的应用。
1. loc
方法概述
loc
方法是 pandas DataFrame 中用于基于标签的索引选择数据的方法。它允许用户通过指定行标签和列标签来选择数据子集。
基本语法
loc
方法的基本语法如下:
DataFrame.loc[row_indexer, column_indexer]
row_indexer
:可以是单个标签、标签列表或标签范围,用于指定行。column_indexer
:可以是单个标签、标签列表或标签范围,用于指定列。
2. 选择单个行或列
示例代码 1:选择单个行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc['pandasdataframe.com1']
print(result)
Output:
示例代码 2:选择单个列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[:, 'Name']
print(result)
Output:
3. 选择多个行或列
示例代码 3:选择多个行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[['pandasdataframe.com1', 'pandasdataframe.com3']]
print(result)
Output:
示例代码 4:选择多个列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[:, ['Name', 'Gender']]
print(result)
Output:
4. 使用切片选择数据
示例代码 5:行切片
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc['pandasdataframe.com1':'pandasdataframe.com2']
print(result)
Output:
示例代码 6:列切片
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[:, 'Name':'Age']
print(result)
Output:
5. 布尔索引
示例代码 7:使用布尔条件选择行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[df['Age'] > 25]
print(result)
Output:
示例代码 8:结合多个条件
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[(df['Age'] > 25) & (df['Gender'] == 'Male')]
print(result)
Output:
6. 使用 loc
修改数据
示例代码 9:修改单个值
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.loc['pandasdataframe.com1', 'Age'] = 26
print(df)
Output:
示例代码 10:修改一整行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.loc['pandasdataframe.com1'] = ['Alicia', 27]
print(df)
Output:
7. 使用 loc
插入数据
示例代码 11:在 DataFrame 中插入新行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df.loc[3] = ['David', 40]
print(df)
Output:
示例代码 12:在 DataFrame 中插入新列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df.loc[:, 'Gender'] = ['Female', 'Male', 'Male']
print(df)
Output:
8. 结合函数使用 loc
示例代码 13:使用自定义函数修改数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
def increment_age(age):
return age + 1
df.loc[:, 'Age'] = df['Age'].apply(increment_age)
print(df)
Output:
示例代码 14:使用 lambda 函数进行条件修改
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.loc[df['Age'] > 25, 'Age'] = df.loc[df['Age'] > 25, 'Age'].apply(lambda x: x + 1)
print(df)
Output:
9. 高级应用
示例代码 15:结合条件和复杂索引
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[(df['Age'] > 25) & (df['Gender'] == 'Male'), ['Name', 'Age']]
print(result)
Output:
示例代码 16:使用 loc
进行复杂的行列选择
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
result = df.loc[df['Age'] > 25, 'Name':'Gender']
print(result)
Output:
10. 使用 loc
进行删除操作
示例代码 17:删除特定行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.drop('pandasdataframe.com1', inplace=True)
print(df)
Output:
示例代码 18:条件删除行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df = df.loc[df['Age'] > 25]
print(df)
Output:
11. 使用 loc
进行数据排序
示例代码 19:对选定的列进行排序
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [35, 25, 30]}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.sort_values(by='Age', inplace=True)
print(df)
Output:
示例代码 20:对多列进行排序
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [35, 25, 30], 'Gender': ['Female', 'Male', 'Male']}
df = pd.DataFrame(data, index=['pandasdataframe.com1', 'pandasdataframe.com2', 'pandasdataframe.com3'])
df.sort_values(by=['Gender', 'Age'], ascending=[True, False], inplace=True)
print(df)
Output:
12. 结论
本文详细介绍了 pandas 的 loc
方法,从基本用法到高级应用,通过多个示例代码展示了如何在实际问题中有效地使用 loc
进行数据选择、修改、插入和删除等操作。