Python Pandas:检查列表中的项是否在df索引中

2024-07-08 11:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
    'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
    'wins': ['11102', '8425', '12%', '15%', '11%', '6%', '20%', '4%'],
    'losses': ['5222', '8888', '6%', '1%', '5%', '30%', '6%', '12%'],
    }
football = pd.DataFrame(data, index=['a','b','c','d','e','f','g','ssa'], columns=['year', 'team', 'wins', 'losses'])

我还有一份清单:

^{pr2}$

我想检查一下固定猫列表中的项目是否在df索引的底部找到。在

以下是我失败的尝试:

football.loc[football.index[-len(fixed_cats):].isin(fixed_cats)]

由于某些原因,这将返回索引为['b','c']的df。在

预期产量:

索引为“g”和“ssa”的df


Tags: 数据dfdataindexyearteamssafixed
1条回答
网友
1楼 · 发布于 2024-07-08 11:31:50

您在第一次尝试中看到['b','c']的原因是从内部isin返回的是一个{}的布尔索引,您从一开始就将其应用于df,您需要再次将其应用于最后3行:

In [21]:

fixed_cats = ['d','g','ssa']
football[-len(fixed_cats):][football.index[-len(fixed_cats):].isin(fixed_cats)]
Out[21]:
     year   team wins losses
g    2011  Lions  20%     6%
ssa  2012  Lions   4%    12%

In [22]:

football.index[-len(fixed_cats):].isin(fixed_cats)
Out[22]:
array([False,  True,  True], dtype=bool)

所以上面的布尔索引需要应用到最后3行,而不是再次应用到整个df,这就是您要做的

相关问题 更多 >

    热门问题