【发布时间】:2020-02-16 19:16:07
【问题描述】:
假设我们有以下 pandas 数据框:
df = pd.DataFrame({'x':[0,0,1,0,0,0,0],'y':[1,1,1,1,1,1,0],'z':[0,1,1,1,0,0,1]})
x y z
0 0 1 0
1 0 1 1
2 1 1 1
3 0 1 1
4 0 1 0
5 0 1 0
6 0 0 1
所有数据框由 1 或 0 填充。分别查看每一列,如果当前行值与先前值不同,我需要计算先前连续值的数量:
x y z
0
1 1
2 2
3 1
4 3
5
6 6 2
我尝试编写一个 lambda 函数并将其应用于整个数据帧,但我失败了。有什么想法吗?
【问题讨论】:
-
什么填充了数据框的其余部分?
-
当前值与前一个相同时,输出数据帧有缺失值。因此,第一行也有缺失值。
-
为什么使用 0 和 1 而不是实际的布尔值?
-
一般问题可以扩展为在数据框中允许多于 0 或 1 个值。我认为仅限制为布尔值可以提供更快的实现,但我不想将解决方案仅限于二进制值。