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

问题描述 投票:1回答:1

我正在研究大学篮球队拿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。

python pandas dataframe indexing loc
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.