擅长:python、mysql、java
<p>值数组上的一个直接递归函数</p>
<pre><code>df = pd.read_csv(io.StringIO("""ID Date Entries
1 2013 100
1 2014 0
1 2015 60
1 2016 -30
1 2017 0
1 2018 50
1 2019 0
1 2020 -20
2 2013 100
2 2014 0
2 2015 60
2 2016 -30
2 2017 0
2 2018 50
2 2019 0
2 2020 -20"""), sep="\t")
def shiftminus(a):
touch=False
for i,n in enumerate(a):
if n<0 and i>0:
a[i-1] += a[i]
a[i] = 0
touch=True
if touch:
a = shiftminus(a)
return a
df["Entries"] = shiftminus(df["Entries"].values)
</code></pre>
<h2>输出</h2>
<pre><code> ID Date Entries
1 2013 100
1 2014 0
1 2015 30
1 2016 0
1 2017 0
1 2018 30
1 2019 0
1 2020 0
2 2013 100
2 2014 0
2 2015 30
2 2016 0
2 2017 0
2 2018 30
2 2019 0
2 2020 0
</code></pre>