擅长:python、mysql、java
<p>创建DF组合A&B:</p>
<pre><code>A = {'index':range(1,11),'A':[300,0,400,0,0,0,0,0,100,0]}
B = {'index':range(1,11),'B':[102,103,94,120,145,114,126,117,107,87]}
df_A = pd.DataFrame(data=A)
df_B = pd.DataFrame(data=B)
df_com = pd.concat([df_A,df_B],axis=1).drop('index',axis=1)
</code></pre>
<p>创建索引:</p>
<pre><code>indexA = list(df_com.A[df_com.A.ne(0)].index + 1)
indexB = np.array(indexA) - 2
indexB = np.append(indexB[1:],(len(df_com)-1))
</code></pre>
<p>将0替换为A列中的ffill():</p>
<pre><code>df_com['A'] = df_com.A.replace(0,method='pad')
</code></pre>
<p>groupby和add索引列:</p>
<pre><code>df_new =df_com.groupby("A",sort=False).apply(lambda x:x.B.shift(1).sum()).reset_index()
df_new['indexA'] = indexA
df_new['indexB'] = indexB
df_new
</code></pre>