Data Wrangling

高效访问Pandas DataFrame单元格值

Spread the love

Pandas DataFrame是Python数据处理的核心。高效访问单个单元格值是常见任务。本文探讨了几种检索这些值的方法,并突出了它们的优缺点。

目录

基于整数的索引:iloc

.iloc提供灵活的基于整数的索引。它对行和列都使用从零开始的索引。


import pandas as pd

data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)

# 访问第1行,第0列的值(第二行,第一列)
value = df.iloc[1, 0]
print(f"使用iloc的值:{value}")  # 输出:20

# 访问第0行,第1列的值(第一行,第二列)
value = df.iloc[0, 1]
print(f"使用iloc的值:{value}")  # 输出:40

.iloc效率很高,尤其对于大型DataFrame,并且通过数值索引提供对单元格选择的精确控制。

iatat用于单单元格访问

.iat.at提供简洁的单单元格访问。.iat使用基于整数的索引,而.at使用基于标签的索引(列名)。


import pandas as pd

data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)

# 使用iat获取第1行,第0列的值
value = df.iat[1, 0]
print(f"使用iat的值:{value}")  # 输出:20

# 使用at获取第0行,'col2'列的值
value = df.at[0, 'col2']
print(f"使用at的值:{value}")  # 输出:40

这些方法比.iloc更快地进行单单元格访问,因为它们返回标量值,而不是Series或DataFrame。

通过列和索引访问:df['col_name'].iloc[]

这种方法先选择一列,然后访问该列底层NumPy数组中的特定行。它不如以前的方法灵活和高效。


import pandas as pd

data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)

# 访问'col1'的第1行值
value = df['col1'].iloc[1] #比.values[]更高效
print(f"使用iloc访问列的值:{value}")  # 输出:20

虽然这看起来很方便,但通常建议直接在列选择上使用.iloc,以提高效率和清晰度。

总而言之,.iloc.iat.at提供了高效且易读的DataFrame单元格访问方式。基于列的方法,即在所选列上使用.iloc,通常优于使用.values[]。选择最适合您需求和编码风格的方法。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注