擅长:python、mysql、java
<ul>
<li>首先对值进行排序,使Nan位于最后一个</li>
<li>然后按列分组,我使用<code>(id,state)</code>填充<code>zone</code></li>
</ul>
<pre><code>df = pd.DataFrame(data={"id":["x","x","x","x"],
"state":["AP","Delhi","AP","Delhi"],
"zone":["sount","north",np.nan,np.nan]})
res = df.sort_values(['id','state','zone'])
res = df.groupby(['id','state'],as_index=False)['zone'].ffill()
print(res)
</code></pre>
<pre><code> id state zone
0 x AP sount
1 x Delhi north
2 x AP sount
3 x Delhi north
</code></pre>
<ul>
<li>如果您只想将状态用作组,请选择第二个答案</li>
</ul>
<pre><code>df['zone'] = df.groupby(['state'],as_index=False)['zone'].transform(lambda x:x.ffill())
print(df)
</code></pre>
<pre><code> id state zone
0 x AP sount
1 x Delhi north
2 x AP sount
3 x Delhi north
</code></pre>