python - 在相等的列值上切片熊猫数据框
问题描述
我有一个看起来像这样的熊猫 df:
import pandas as pd
df = pd.DataFrame({0:[1],5:[1],10:[1],15:[1],20:[0],25:[0],
30:[1],35:[1],40:[0],45:[0],50:[0]})
df
列名反映坐标。我想检索具有连续相等数字的列的开始和结束坐标。
输出应该是这样的:
# start,end
0,15
20,25
30,35
40,50
解决方案
IIUCgroupby
使用diff
和cumsum
拆分组
s=df.T.reset_index()
s=s.groupby(s[0].diff().ne(0).cumsum())['index'].agg(['first','last'])
Out[241]:
first last
0
1 0 15
2 20 25
3 30 35
4 40 50
推荐阅读
- python - 使 Spark 结构化流中的 JSON 可以在 python (pyspark) 中作为没有 RDD 的数据帧访问
- angular - Webpack Live Reload 总是落后一步
- javascript - 强制滚动 div 元素停止
- unity3d - 如何在 Unity 项目之间传输数据
- angular - 在角度分量之间使用静态数据
- perl - 如何在 Perl 中从 XML 文件中获取数据?
- javascript - 来自设备的 JSON 格式不正确
- unity3d - 当尝试在 Unity 中使用 Mapbox SDK 导出项目的 APK 时,它会崩溃 IL2CPP 错误
- node.js - 防止同一用户同时登录不同系统
- java - 如何在 Spring Cloud Netflix Zuul 上配置简单的速率限制?