Python 伊辛熊猫的问题
抱歉,我只是问了这个问题:但过早地将其标记为已回答,因为它通过了我过于简单的测试用例,但没有更普遍地工作。(如果有可能合并并重新讨论这个问题,那就太好了……) 全文如下:Python 伊辛熊猫的问题,python,pandas,Python,Pandas,抱歉,我只是问了这个问题:但过早地将其标记为已回答,因为它通过了我过于简单的测试用例,但没有更普遍地工作。(如果有可能合并并重新讨论这个问题,那就太好了……) 全文如下: sum(data['Name'].isin(eligible_players)) > 0 sum(data['Name'] == "Antonio Brown") > 68 "Antonio Brown" in eligible_players > True 基本上,如果我理解正确的话,我正在证明安东尼
sum(data['Name'].isin(eligible_players))
> 0
sum(data['Name'] == "Antonio Brown")
> 68
"Antonio Brown" in eligible_players
> True
基本上,如果我理解正确的话,我正在证明安东尼奥·布朗是合格的球员,他在数据框中。但是,由于某些原因,.isin()无法正常工作
正如我在前面的问题中所说,我正在寻找一种方法来检查多个OR以选择正确的行
____编辑____
In[14]:
eligible_players
Out[14]:
Name
Antonio Brown 378
Demaryius Thomas 334
Jordy Nelson 319
Dez Bryant 309
Emmanuel Sanders 293
Odell Beckham 289
Julio Jones 288
Randall Cobb 284
Jeremy Maclin 267
T.Y. Hilton 255
Alshon Jeffery 252
Golden Tate 250
Mike Evans 236
DeAndre Hopkins 223
Calvin Johnson 220
Kelvin Benjamin 218
Julian Edelman 213
Anquan Boldin 213
Steve Smith 213
Roddy White 208
Brandon LaFell 205
Mike Wallace 205
A.J. Green 203
DeSean Jackson 200
Jordan Matthews 194
Eric Decker 194
Sammy Watkins 190
Torrey Smith 186
Andre Johnson 186
Jarvis Landry 178
Eddie Royal 176
Brandon Marshall 175
Vincent Jackson 175
Rueben Randle 174
Marques Colston 173
Mohamed Sanu 171
Keenan Allen 170
James Jones 168
Malcom Floyd 168
Kenny Stills 167
Greg Jennings 162
Kendall Wright 162
Doug Baldwin 160
Michael Floyd 159
Robert Woods 158
Name: Pts, dtype: int64
及
(旁白:一旦发布了实际使用的内容,只需几秒钟就可以看到问题。)
Series.isin(something)
迭代something
,以确定要测试其成员资格的内容集。但是你的合格玩家
不是一个列表,而是一个系列。而对一个系列的迭代就是对值的迭代,即使成员资格(中的)与索引有关:
In [72]: eligible_players = pd.Series([10,20,30], index=["A","B","C"])
In [73]: list(eligible_players)
Out[73]: [10, 20, 30]
In [74]: "A" in eligible_players
Out[74]: True
因此,在您的情况下,您可以使用合格的\u players.index
来传递正确的姓名:
In [75]: df = pd.DataFrame({"Name": ["A","B","C","D"]})
In [76]: df
Out[76]:
Name
0 A
1 B
2 C
3 D
In [77]: df["Name"].isin(eligible_players) # remember, this will be [10, 20, 30]
Out[77]:
0 False
1 False
2 False
3 False
Name: Name, dtype: bool
In [78]: df["Name"].isin(eligible_players.index)
Out[78]:
0 True
1 True
2 True
3 False
Name: Name, dtype: bool
In [79]: df["Name"].isin(eligible_players.index).sum()
Out[79]: 3
请做一个测试,这样其他人可以确认问题(我们可以验证这不仅仅是合格的玩家发生了某种变化或其他琐碎的事情。)是的,就是上面提到的,在我的玩具中,这是完美的fine@DSM我试图在我之前的问题中创建一个最小的、完整的、可验证的示例,我将其链接到,它奏效了,所以我接受了答案。当在我的实际数据上运行它时,它不起作用,所以我在寻找问题的根源…@qwertylpc:你之前的问题不包含MCVE。任何人都无法复制和粘贴任何内容来查看您面临的问题。@DSM我添加了部分数据帧和符合条件的\u players我也有同样的问题,但有一个列表,而不是一个系列。你怎么认为?
In [75]: df = pd.DataFrame({"Name": ["A","B","C","D"]})
In [76]: df
Out[76]:
Name
0 A
1 B
2 C
3 D
In [77]: df["Name"].isin(eligible_players) # remember, this will be [10, 20, 30]
Out[77]:
0 False
1 False
2 False
3 False
Name: Name, dtype: bool
In [78]: df["Name"].isin(eligible_players.index)
Out[78]:
0 True
1 True
2 True
3 False
Name: Name, dtype: bool
In [79]: df["Name"].isin(eligible_players.index).sum()
Out[79]: 3