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,并且通过数值索引提供对单元格选择的精确控制。
iat
和at
用于单单元格访问
.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[]
。选择最适合您需求和编码风格的方法。