pandas dataframe loc 示例
参考:pandas dataframe loc example
Pandas 是一个强大的 Python 数据分析工具库,它提供了许多用于数据处理的功能,其中 DataFrame
是 Pandas 中最常用的数据结构之一。DataFrame
是一个二维的、表格型的数据结构,它可以存储不同类型的数据,并且提供了丰富的方法来操作这些数据。在本文中,我们将重点介绍如何使用 DataFrame
的 loc
方法来选择和修改数据。
loc
方法是用于按标签选择数据的主要方法。它可以接受单个标签、标签列表、标签切片以及布尔数组等多种形式的输入。通过 loc
方法,我们可以非常灵活地从 DataFrame
中选择数据,或者对数据进行修改。
1. 使用单个标签选择数据
当我们需要选择 DataFrame
中某一行或某一列的数据时,可以使用单个标签作为 loc
方法的参数。
示例代码 1: 选择单个列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[:, 'Name']
print(result)
Output:
示例代码 2: 选择单个行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[0, :]
print(result)
Output:
2. 使用标签列表选择数据
如果我们需要选择 DataFrame
中多个特定的行或列,可以使用标签列表作为 loc
方法的参数。
示例代码 3: 选择多个列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
result = df.loc[:, ['Name', 'City']]
print(result)
Output:
示例代码 4: 选择多个行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
result = df.loc[[0, 2], :]
print(result)
Output:
3. 使用标签切片选择数据
loc
方法也支持使用标签切片来选择数据。这种方式可以方便地选择连续的多行或多列。
示例代码 5: 切片选择行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
result = df.loc[1:3, :]
print(result)
Output:
示例代码 6: 切片选择列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
result = df.loc[:, 'Name':'City']
print(result)
Output:
4. 使用布尔数组选择数据
我们可以使用布尔数组来进行条件选择,这是一种非常灵活的数据选择方式。通过布尔数组,我们可以根据数据的具体内容来选择需要的数据行或列。
示例代码 7: 布尔数组选择行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
result = df.loc[df['Age'] > 30, :]
print(result)
Output:
示例代码 8: 布尔数组选择列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pandasdataframe.com.DataFrame(data)
result = df.loc[:, df.columns != 'City']
print(result)
5. 修改数据
loc
方法不仅可以用于选择数据,还可以用于修改数据。我们可以通过 loc
方法选择数据后,直接对其赋值来修改数据。
示例代码 9: 修改单个数据点
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
df.loc[0, 'Name'] = 'Anna'
print(df)
Output:
示例代码 10: 修改一整行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
df.loc[1, :] = ['Barbara', 32]
print(df)
Output:
示例代码 11: 修改一整列数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
df.loc[:, 'Age'] = [26, 31, 36, 41]
print(df)
Output:
6. 使用条件表达式进行复杂选择
loc
方法可以与条件表达式结合使用,实现更复杂的数据选择需求。我们可以使用逻辑运算符如 &
(和), |
(或), ~
(非) 来组合多个条件。
示例代码 12: 使用多个条件选择数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
result = df.loc[(df['Age'] > 30) & (df['City'] == 'Chicago'), :]
print(result)
Output:
示例代码 13: 使用条件否定选择数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
result = df.loc[~(df['Age'] <= 30), :]
print(result)
Output:
7. 使用 loc
方法进行复杂的数据修改
通过结合使用 loc
方法和条件表达式,我们可以对 DataFrame
中满足特定条件的数据进行复杂的修改。
示例代码 14: 根据条件修改数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
df.loc[df['Age'] > 30, 'City'] = 'San Francisco'
print(df)
Output:
示例代码 15: 同时修改多个列的数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
df.loc[df['Age'] > 30, ['City', 'Name']] = ['San Francisco', 'Dan']
print(df)
Output:
8. 使用 loc
进行行列同时选择和修改
loc
方法可以同时对行和列进行选择和修改,这提供了极大的灵活性。
示例代码 16: 同时选择特定行和列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
result = df.loc[1:3, ['Name', 'City']]
print(result)
Output:
示例代码 17: 同时修改特定行和列的数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
df.loc[1:2, ['Name', 'City']] = [['Barbara', 'San Diego'], ['Carl', 'San Jose']]
print(df)
Output:
9. 使用 loc
进行复杂的数据插入
有时候我们需要在 DataFrame
中插入新的行或列,loc
方法也可以帮助我们实现这一点。
示例代码 18: 插入新的行
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
new_row = {'Name': 'Eva', 'Age': 28, 'City': 'Boston'}
df.loc[3] = new_row
print(df)
Output:
示例代码 19: 插入新的列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df.loc[:, 'City'] = ['New York', 'Los Angeles', 'Chicago']
print(df)
Output:
10. 使用 loc
进行数据的复制和粘贴
在数据处理过程中,我们有时需要复制一部分数据,然后粘贴到 DataFrame
的其他位置。loc
方法可以帮助我们完成这一操作。
示例代码 20: 复制并粘贴数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
df.loc[4] = df.loc[1]
print(df)
Output:
通过上述示例代码,我们可以看到 loc
方法在 Pandas DataFrame
中的强大功能和灵活性。无论是选择数据、修改数据还是插入新的数据,loc
都提供了简洁有效的解决方案。希望本文能帮助你更好地理解和使用 Pandas 的 loc
方法来处理你的数据。