如何让df.loc只返回数据帧的特定单元格中的值(数字)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让df.loc只返回数据帧的特定单元格中的值(数字)?相关的知识,希望对你有一定的参考价值。

我正在研究大学篮球队拿2和3的频率数据。我计划将它们取3的频率乘以3,并将其加到频率上,它将2乘以2.函数将执行此操作。该函数稍后将被放入更大的函数中,但这不应该引起任何约束(我不认为)。

以下是pandas数据集的前10行:

Team    3PtTakeRate 2PtTakeRate
Savannah St 0.577   0.423
Quinnipiac  0.538   0.462
Citadel     0.536   0.464
Villanova   0.535   0.465
Winthrop    0.527   0.473
Longwood    0.501   0.499
Elon        0.500   0.500
Auburn      0.496   0.504
Campbell    0.490   0.510
N Dakota St 0.482   0.518
N Hampshire 0.481   0.519

如果重要,我用csv文件加载数据:

TeamShotChoices = pd.read_csv("NCAAExpValue.csv",sep=',')

这是我的函数的样子:

def PtsPerSuccess(Team):
    TeamPts = ((TeamShotChoices.loc[TeamShotChoices['Team']==Team,'3PtTakeRate']) * 3) + ((TeamShotChoices.loc[TeamShotChoices['Team']==Team,'2PtTakeRate']) * 2)
    return TeamPts

Team参数将是引号中的团队名称。对于记录,在较大的函数中,这个参数将从字符串列表中拉出来,并且需要为团队和下一次找到这个值....但我应该能够使用[i]和[i + 1]和指数。所以,再次,应该没事....

当我运行此功能时,例如:

PtsPerSuccess('Savannah St')

我得到的是这个:

0    2.577
dtype: float64

我将使用2.577作为我乘以的数字,然后在if语句中使用该结果产品来确定模拟游戏的获胜者。所以返回的方式不起作用。

我很困惑的是为什么它给了我所有这些信息。我不想要0(这是行号),我不想要dtype。我只想要函数,在这种情况下,返回2.577。

答案

原因很简单,你基本上在pandas对象上执行转换,通常包含多个值。 pandas不知道Team的每个值都是唯一的(怎么可能?),所以它假设选择和乘法运算导致另一个结果也包含多个值。

要破坏你的代码,你可以将你的return语句更改为return TeamPts[0]

以上是关于如何让df.loc只返回数据帧的特定单元格中的值(数字)?的主要内容,如果未能解决你的问题,请参考以下文章

在忽略几行的同时在DataFrame上使用.loc

python如何检查数据框中的值是不是为nan [重复]

如何使用 XPath 获取特定表格单元格中的值

如何使用str.contains函数使用行索引替换单元格值

如何根据多个单元格中的值自动填充

删除特定行中具有特定值的所有列