python - 根据 Pandas DataFrame 列中的值序列查找行的索引
问题描述
我有一个包含三个唯一字符串的列的 DataFrame。我需要做的是生成一个列表,其中包含行的索引,这些索引在良好之后具有“非常糟糕”,但在“糟糕”之后不是“非常糟糕”。
import random
df = pd.DataFrame({
'measure': [random.randint(0,10) for _ in range(0,20)],
})
df['status'] = df.apply(
lambda x: 'good' if x['measure'] > 4 else 'very bad' if x['measure'] < 2 else 'bad',
axis=1)
measure status
0 8 good
1 8 good
2 0 very bad
3 5 good
4 2 bad
5 3 bad
6 9 good
7 9 good
8 10 good
9 5 good
10 1 very bad
11 7 good
12 7 good
13 6 good
14 5 good
15 10 good
16 3 bad
17 0 very bad
18 3 bad
19 5 good
我希望得到这个列表:
[2, 10]
有没有一种解决方案?
我不想使用数值,因为它们在这里纯粹用于生成 DataFrame 或遍历所有行,这对我的用例来说计算成本很高。
解决方案
如果您的数据帧索引是默认范围索引,那么您可以使用这个:
np.where((df['status'] == 'very bad') & (df['status'].shift() == 'good'))[0]
输出:
array([ 2, 10], dtype=int64)
否则,您可以使用以下内容:
irow = np.where((df['status'] == 'very bad') & (df['status'].shift() == 'good'))[0]
df.index[irow]
推荐阅读
- c# - c#/WinForms - 从资源中获取文件并将其放在 C: 驱动器上的目录中
- c# - RequestURI 在 API 链接 asp.net 中去除“点”
- scikit-learn - 导入 eli5、Python 3.7、sklearn 版本 0.19.2 时出错
- c++ - Matlab与QT图形集成
- hl7-fhir - 无法理解 Schema/Schematron Validator 的重要性
- postgresql - 在postgresql中加入主键缓慢
- vb.net - 用于 OracleInProcServer.OraDynaset 的 vb6 到 vb.net
- java - 使用 privateKey 签署消息(椭圆 p256)
- azure-active-directory - .net core 2.0 Azure AD 登录失败:AADSTS70001:在目录“xxxx ....”中找不到标识符为“xxx ....”的应用程序
- linux - 在 shell 脚本中解析命令的输出