如何从 Pandas DataFrame 单元格获取值
Asad Riaz
2023年1月30日
2020年3月28日
-
iloc
从 PandasDataFrame
的单元中获取价值 -
从 Pandas DataFrame 的单元中获取
iat
和at
来获取值 -
df['col_name'].values[]
从 Pandas DataFrame 的单元格获取值
我们将介绍使用 iloc
来从 Pandas DataFrame
的单元格中获取值的方法,该方法非常适合按位置进行选择;我们还会介绍它与 loc
的区别。我们还将学习 iat
和 ['col_name'].values[]
方法,当我们不想将返回类型设为 pandas.Series
时,可以使用它们。
iloc
从 Pandas DataFrame
的单元中获取价值
iloc 是从 Pandas dataframe 单元中获取值的最有效方法。假设,我们有一个 DataFrame
,其列的名称分别为 price
和 stock
,并希望从第三行获取一个值以检查价格和库存状况。
首先,我们需要访问行,然后使用列名访问值。
示例代码:
# python 3.x
import pandas as pd
df = pd.DataFrame({
'name':
['orange','banana','lemon','mango','apple'],
'price':
[2,3,7,21,11],
'stock':
['Yes','No','Yes','No','Yes']
})
print(df.iloc[2]['price'])
print(df.iloc[2]['stock'])
输出:
7
Yes
iloc
在索引中的特定位置获取行(或列)。这就是为什么它仅采用整数作为参数的原因。然后 loc
从索引中获取带有特定标签的行(或列)。
从 Pandas DataFrame 的单元中获取 iat
和 at
来获取值
iat
和 at
是标量的快速访问方法,可从 Pandas DataFrame
的单元格中获取值。
示例代码:
# python 3.x
import pandas as pd
df = pd.DataFrame({
'name':
['orange','banana','lemon','mango','apple'],
'price':
[2,3,7,21,11],
'stock':
['Yes','No','Yes','No','Yes']
})
print(df.iat[0,0])
print(df.at[1,'stock'])
输出:
orange
No
为了获得最后一行条目,我们将使用 at[df.index[-1],'stock']
。
示例代码:
# python 3.x
import pandas as pd
df = pd.DataFrame({
'name':
['orange','banana','lemon','mango','apple'],
'price':
[2,3,7,21,11],
'stock':
['Yes','No','Yes','No','Yes']
})
print(df.at[df.index[-1],'stock'])
输出:
Yes
df['col_name'].values[]
从 Pandas DataFrame 的单元格获取值
df['col_name'].values[]
首先将 datafarme
列转换为一维数组,然后访问该数组索引处的值:
示例代码:
# python 3.x
import pandas as pd
df = pd.DataFrame({
'name':
['orange','banana','lemon','mango','apple'],
'price':
[2,3,7,21,11],
'stock':
['Yes','No','Yes','No','Yes']
})
print(df['stock'].values[0])
输出:
Yes
它返回的不是 pandas.Series
,并且使用起来最简单。