python - pandas 数据块索引
问题描述
我想找到数据集中每个数据块的起始索引和结束索引。数据是这样的:
index A wanted_column1 wanted_column2
2000/1/1 0 0
2000/1/2 1 2000/1/2 1
2000/1/3 1 1
2000/1/4 1 1
2000/1/5 0 0
2000/1/6 1 2000/1/6 2
2000/1/7 1 2
2000/1/8 1 2
2000/1/9 0 0
如数据所示,index
andA
是给定的列,wanted_column1
andwanted_column2
是我想要得到的。这个想法是有不同的连续数据块。我想检索每个数据块的起始索引,并且我想增加数据中有多少块的计数。
我尝试使用shift(-1)
,但无法区分起始索引和结束索引之间的差异。
解决方案
那是你需要的吗?
df['change'] = df['A'].diff().eq(1)
df['wanted_column1'] = df[['index','change']].apply(lambda x: x[0] if x[1] else None, axis=1)
df['wanted_column2'] = df['change'].cumsum()
df['wanted_column2'] = df[['wanted_column2','A']].apply(lambda x: 0 if x[1]==0 else x[0], axis=1)
df.drop('change', axis=1, inplace=True)
这产生:
index A wanted_column1 wanted_column2
0 2000/1/1 0 None 0
1 2000/1/2 1 2000/1/2 1
2 2000/1/3 1 None 1
3 2000/1/4 1 None 1
4 2000/1/5 0 None 0
5 2000/1/6 1 2000/1/6 2
6 2000/1/7 1 None 2
7 2000/1/8 1 None 2
8 2000/1/9 0 None 2
编辑:性能比较
gehbiszumeis
的解决方案:19.9 ms
my
解决方案 :4.07 ms
推荐阅读
- python - 如何读取包含电子邮件和密码的 csv 文件并将结果保存在字典中?
- excel - Excel VBA - 如果区域中的任何单元格文本被着色,则单元格中的颜色文本
- wordpress - 禁用帖子或帖子类型wordpress的链接
- typescript - 如何在 TypeScript 中正确键入 mapOptional 函数?
- javascript - 如何恢复图片的高宽
- git - Git推送被忽略的文件
- java - 如何解决 Android Studio 错误“重复的 jar 条目”?
- netlogo - 如何修复此循环,foreach 命令添加所有不应该的变量
- kubernetes - 如何使用网络策略停止所有外部流量并仅允许命名空间内的 Pod 间网络调用?
- gtk - 使用 compton 的 GTK 窗口的不透明度问题