pandas - 根据列表中出现的值对 df 进行切片
问题描述
我有一个包含值的列表:
['A','B','C']
然后我有一个 df 那些索引包含该列表值:
valuess
A 3
Ai 4
Aii 5
Aiii 4
B 2
Bi 3
Bii
Biii
我想得到一个由数组中出现的值下方的下3个值组成的df,第一种情况是:
valuess
A 3
Ai 4
Aii 5
Aiii 4
并将dfs分组到一个列表中。
解决方案
利用:
L = ['A','B','C']
df = df.groupby(np.cumsum(df.index.isin(L))).head(4)
print (df)
valuess
A 3.0
Ai 4.0
Aii 5.0
Aiii 4.0
B 2.0
Bi 3.0
Bii NaN
Biii NaN
如果可能,索引的第一个值与列表中的值不匹配:
L = ['A','B','C']
arr = np.cumsum(df.index.isin(L))
df = df[arr != 0].groupby(arr[arr != 0]).head(4)
推荐阅读
- powershell - Azure AD 设备注册列
- docker - 将第四个组织添加到 Hyperledger Fabric 2.0 时出错
- node.js - Node.js 中的进程 vs Worker vs 线程 vs 任务 vs 池
- firebase - 如何删除 Firebase Firestore 中的选定文档
- swift - '没有为具有标识符的任务注册启动处理程序......'(Swift)
- java - EntityScanner 是否检测抽象类和接口?(Spring Boot 2.2.6)
- c# - 如何暂停线程?
- javascript - 猛犸象没有找到任何模块
- javascript - 在 JavaScript 中,确定字符串中第一个字符的最高效方法是:startsWith、charAt 或 [0]
- angular - 在更改模型上动态加载组件时出错