擅长:python、mysql、java
<p>另一种方法是使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.first_valid_index.html" rel="noreferrer">^{<cd1>}</a>和<a href="http://pandas.pydata.org/pandas-docs/dev/groupby.html#transformation" rel="noreferrer">^{<cd2>}</a>:</p>
<pre><code>In [11]: g = df.groupby('trial')
In [12]: g['cs_name'].transform(lambda s: s.loc[s.first_valid_index()])
Out[12]:
0 A1
1 A1
2 A1
3 A1
4 B2
5 B2
6 B2
7 B2
8 A1
9 A1
10 A1
11 A1
Name: cs_name, dtype: object
</code></pre>
<p><em>这应该比使用ffill和bfill更有效。。。</em></p>
<p>并使用此项更改<code>cs_name</code>列:</p>
<pre><code>df['cs_name'] = g['cs_name'].transform(lambda s: s.loc[s.first_valid_index()])
</code></pre>
<p>注意:我认为有一个方法来获取熊猫中的第一个非空对象是很好的增强,在numpy中是<a href="https://github.com/numpy/numpy/issues/2269" rel="noreferrer">an open request</a>,我认为目前没有一个方法(我可能错了!)。。。</p>