当前位置: 首页 > 面试题库 >

每次有0时都会重置的Python pandas cumsum

哈涵容
2023-03-14
问题内容

我有一个0和1的矩阵,想对每一个列做一个累加,每当观察到一个零时就重置为0。例如,如果我们具有以下内容:

df = pd.DataFrame([[0,1],[1,1],[0,1],[1,0],[1,1],[0,1]],columns = ['a','b'])
print(df)
   a  b
0  0  1
1  1  1
2  0  1
3  1  0
4  1  1
5  0  1

我想要的结果是:

print(df)
   a  b
0  0  1
1  1  2
2  0  3
3  1  0
4  2  1
5  0  2

但是,当我尝试时df.cumsum() * df,我能够正确识别0个元素,但计数器不会重置:

print(df.cumsum() * df)
   a  b
0  0  1
1  1  2
2  0  3
3  2  0
4  3  4
5  0  5

问题答案:

您可以使用:

a = df != 0
df1 = a.cumsum()-a.cumsum().where(~a).ffill().fillna(0).astype(int)
print (df1)
   a  b
0  0  1
1  1  2
2  0  3
3  1  0
4  2  1
5  0  2


 类似资料:
  • 我发现了几份涉及mvn的类似报告,但没有一份涉及Gradle。问题是。 我去档案- 我刷新Gradle项目,检查文件- 因此,在阅读了我在stackoverflow上发现的问题后,这是我的build.gradle. 刷新。它仍然重置我的项目设置。 以下是gradle设置: 请帮忙。

  • null 示例代码: 知道为什么第二次测试失败了吗?

  • vue2开发 需求是没间隔多上时间请获取一次token、token是10分钟有效、我需要在7分钟的时候刷新一次token、然后我使用的是setInterval()方法 没7分钟请求一次, 但是出现的问题是、页面刷线以后setInterval()方法又重新执行了一次、导致没有正常刷新token 如何解决setInterval页面刷新以后不再重新执行 或者利用其他方法

  • 问题内容: 我正在使用 PhoneGap 开发移动应用程序,并且必须 从另一个项目 访问某些 服务 。我正在使用 jquery-2.0.0.js 和 jquery-mobile-1.3.2.js 。 这个ajax调用每次都会失败。在 config.xml中, 我有以下几行: 我可能在哪里错了! 问题答案: 问题在于您的phonegap应用程序正在从非网络服务器请求本地文件。本地文件交付时没有HTT

  • 每次重新启动时,Eclipse都会将编译器遵从性级别重置为1.7。对于大尺寸的代码来说,这有点麻烦,因为对于每一个编译器遵从性级别的更改,eclipse都需要一个新的构建 我安装了JDK 8,并在eclipse和项目首选项文件中将所有内容设置为1.8。

  • 我一直在尝试创建一个可重用的页脚组件,并希望它放置在底部,而不考虑页眉和页脚之间的内容,但对于某些页面,它会留在底部,而某些页面,它要么在顶部,要么在顶部之间。 有人能帮我一下吗? app.component.html app.component.css 页脚.组件 footer.component.css