sum_of_dice = die.sample(2, replace=True).sum().loc[0]
这是用于查找两个掷在一起的骰子的面之和的代码。在这段代码中,我不了解loc[0]
在做什么
代码正在运行。但我想知道.loc[0]
在这段代码中的作用:
import pandas as pd
die = pd.DataFrame([1, 2, 3, 4, 5, 6])
sum_of_dice = die.sample(2, replace=True).sum().loc[0]
print('Sum of dice is', sum_of_dice)
答案 0 :(得分:0)
以下是有关Pandas loc属性如何工作的简要概述https://www.geeksforgeeks.org/python-pandas-dataframe-loc/
答案 1 :(得分:0)
Loc似乎是某种列表。表示它存储(或可以存储)多个值。 该代码只希望访问索引0(即起始索引)处的值。
答案 2 :(得分:0)
Pandas loc indexer可以与DataFrames一起用于两种不同的用例:
a)通过标签/索引选择行
b)选择具有布尔/条件查找的行
有关更多信息,请通过:
答案 3 :(得分:0)
由于die
被定义为pandas.DataFrame
,因此它本质上是二维的。
die = pd.DataFrame([1, 2, 3, 4, 5, 6])
die
0
0 1
1 2
2 3
3 4
4 5
5 6
pandas.DataFrame.sample
将返回另一个二维的pandas.DataFrame
roll = die.sample(2, replace=True)
roll
0
1 2
4 5
默认情况下,当我们pandas.DataFrame.sum
时,我们对每一列求和并返回一个pandas.Series
,其中pandas.Series
的索引是我们求和的pandas.DataFrame
的列对象
roll.sum()
0 7
dtype: int64
这是一个带有一个值的pandas.Series
。如果只需要第一个值,则可以使用loc[0]
roll.sum().loc[0]
7
使用pandas.Series
定义die
import pandas as pd
die = pd.Series([1, 2, 3, 4, 5, 6])
sum_of_dice = die.sample(2, replace=True).sum()
print('Sum of dice is', sum_of_dice)
在这种情况下,die
是一维pandas.Series
,因此die.sample(2, replace=True)
也是一维的。因此,幸运的是,pandas.Series
的总和就是一个标量……这就是我们想要的。无需使用loc
。而且,创建pandas.DataFrame
比创建pandas.Series
花费的精力要少得多。另外,调用loc
也有一些开销。总而言之,我们保存2 pandas.DataFrames
的创建(一个来自pd.Series
而不是pd.DataFrame
,两个来自die.sample
的创建,后者创建另一个pandas.Series
而不是另一个{{ 1}}),我们为自己节省了pandas.DataFrame
的通话。