<p>@rhug123有一个很好的答案</p>
<p>只是想以类似<code>dplyr</code>的方式展示一种不同的方法:</p>
<pre class="lang-py prettyprint-override"><code>>>> from datar.all import *
>>> df = tribble(
... f.week1, f.week2, f.week3, f.week4, f.week5,
... 70, 60, 50, -40, -30,
... 50, 10, -20, -40, -60,
... -80, -90, -100, -110, -120,
... 110, 80, 70, 60, 50,
... 10, -50, -70, -80, -90,
... )
>>> df >> rowwise() >> mutate(
... POSITIVE_WEEKS=sum(as_integer(c_across(starts_with("week")) > 0))
... )
week1 week2 week3 week4 week5 POSITIVE_WEEKS
<int64> <int64> <int64> <int64> <int64> <int64>
0 70 60 50 -40 -30 3
1 50 10 -20 -40 -60 2
2 -80 -90 -100 -110 -120 0
3 110 80 70 60 50 5
4 10 -50 -70 -80 -90 1
>>> # or
>>> df >> rowwise() >> mutate(
... POSITIVE_WEEKS=sum(if_else(c_across(starts_with("week")) > 0, 1, 0))
... )
week1 week2 week3 week4 week5 POSITIVE_WEEKS
<int64> <int64> <int64> <int64> <int64> <int64>
0 70 60 50 -40 -30 3
1 50 10 -20 -40 -60 2
2 -80 -90 -100 -110 -120 0
3 110 80 70 60 50 5
4 10 -50 -70 -80 -90 1
</code></pre>
<p><a href="https://github.com/pwwang/datar" rel="nofollow noreferrer">^{<cd2>}</a>是一个在python中移植dplyr和相关R包的包。我是这个包裹的作者</p>